你真的了解JAVA中的泛型E、T、K、V吗?

Python015

你真的了解JAVA中的泛型E、T、K、V吗?,第1张

Java 泛型(generics)是 JDK 5 中引入的一个新特性, 泛型提供了编译时类型安全检测机制,该机制允许开发者在编译时检测到非法的类型。泛型的本质是参数化类型,也就是说所操作的数据类型被指定为一个参数。

在没有泛型的情况的下,通过对类型 Object 的引用来实现参数的“任意化”,“任意化”带来的缺点是要做显式的强制类型转换,而这种转换是要求开发者对实际参数类型可以预知的情况下进行的。对于强制类型转换错误的情况,编译器可能不提示错误,在运行的时候才出现异常,这是本身就是一个安全隐患。

那么泛型的好处就是在编译的时候能够检查类型安全,并且所有的强制转换都是自动和隐式的。本质上T,E,K,V都是通配符,没啥区别,只不过是编码时的一种约定俗成的东西。比如上述代码中的 T ,我们可以换成 A-Z 之间的任何一个 字母都可以,并不会影响程序的正常运行。

但是如果换成其他的字母代替 T ,在可读性上可能会弱一些。通常情况下,T,E,K,V,?是这样约定的:?表示不确定的 java 类型。T (type) 表示具体的一个java类型。K V (key value) 分别代表java键值中的Key Value。E (element) 代表Element。

java语句中输出内容是v.i该怎么输出

java中输出数据可以使用“System.out.println()”语句,该语句是最常用的输出语句,该语句会把括号里的内容转换成字符串输出到控制台,并且换行。

作者 蔡学镛 广泛地说 只要能执行 Java bytecode 者 就可以称为 Java 平台(Java platform) 大致上 实现 Java 平台的方式有三种 分别是 Java 虚拟机器(Java Virtual Machine JVM) Java 作业系统(Java Operating System) Java 晶片(Java Chip) 以下就此三种 Java 平台提出解说 并比较之 Java 虚拟机器所谓的 Java 虚拟机器 指的是在作业系统上执行的一种程式 此程式可以解读 Java bytecode 并在作业系统的帮助下执行 Java bytecode 这样的执行架构 大致上可以分成四层 分别是 第一层(最上层)的 Java bytecode 第二层的 Java 虚拟机器 第三层的作业系统 第四层(最底层)的晶片 晶片执行上面的作业系统 作业系统执行上面的 Java 虚拟机器 Java 虚拟机器执行上面的 Java bytecode 对于 Java bytecode 来说 它只接触到 Java 虚拟机器 所以当然「误以为」Java 虚拟机器就是它的平台 实例 Pentium III Chip + Windows OS + Sun HotSpot Client VM + Together/ Java Application Java 作业系统如果把 Java 虚拟机器整合进既有的作业系统中(例如 Mac OS X) 或是打造一个全新的作业系统专门执行 Java bytecode(例如 JOS) 这类能直接执行 Java bytecode 的作业系统也可视为 Java 平台 这样的执行架构 大致上可以分成三层 分别是 第一层(最上层)的 Java bytecode 第二层的 Java 作业系统 第三层(最底层)的晶片 Java 晶片如果把 Java 作业系统和既有的晶片整合起来成为一组新的晶片(例如 ARM arm ) 或者打造一个全新的 Java 专用晶片(例如 aJile aJ )那么此一种类的晶片也是 Java 平台 这样的执行架构 大致上可以分成两层 分别是 第一层(最上层)的 Java bytecode 第二层(最底层)的 Java 晶片 三种方式的比较这三种都是 Java 平台 各有优缺点 很难说那一种方式比较好 必须看你的需求而定 透过虚拟机器来执行 Java 是最常见的架构方式 一方面是因为虚拟机器的 Java 平台最容易被实作出来(相较于 Java 作业系统和 Java 晶片而言) 二方面是因为只要有虚拟机器就可以让在不更动实体平台(作业系统和 CPU)的情况下多了执行 Java 程式的功能 目前 多数主流的实体平台(包括 Windows Linux Mac Solaris PalmOS EPOC )都已经有 Java 虚拟机器了 虚拟机器的架构因为分了太多层级 所以效率上当然会比较差 这是虚拟机器架构最为人所抨击的地方 但是由于虚拟机器的技术一直在进步 所以执行效率一直都有持续的提升 目前已经相当逼近 Java 作业系统的架构方式 所以虚拟机器的方式应该会继续成为 PC 上的 Java 平台主流 一般来说 透过 Java 作业系统来执行 Java bytecode 效率会比虚拟机器的方式好 所以 Java 虚拟机器被整合进作业系统中 来提升该作业系统的附加价值 这种作法有可能会成为一种趋势(例如 MacOS X 就把 Java 和作业系统作了很好的整合) 但如果设计一套只能执行 Java 的全新作业系统 可能不容易成功 因为全新的作业系统势必面临驱动程式(device driver)不足的严重困扰 因为此原因 加上事实证明作业系统的 Java 平台 比虚拟机器的 Java 平台效率提升不如预期多 所以 IBM 和 Sun 合作的纯 Java 作业系统「JavaOS」计画已经停摆 利用晶片的方式来实作 Java 平台 对于 Java 程式的执行速度会有很大的提升 毕竟硬体的速度比软体快许多 这种方式以后会成为嵌入式系统的主流 许多 Java 的 IA 产品(例如 Set Top Box)都会开始使用 Java 晶片 但是这种方式已经把 Java 整个变成硬体平台 不适合再称为跨平台了 lishixinzhi/Article/program/Java/JSP/201311/19489