1) 使用T赋值的都是为具体类型.,我们用通配符(?)代替了:
? 叫有限制的通配符, 用于赋值的类型不确定的时候。
2) 观察如下代码:
package genericTest;
public class Parent {
}
package genericTest;
public class Child extends Parent {
}
package genericTest;
import java.util.ArrayList;
import java.util.List;
public class Test {
public static void doTest(List<? extends Parent> list) { //?表示运行时确定具体类型
}
/**
* @param args
*/
public static void main(String[] args) {
List<Parent> pList = new ArrayList<Parent>() ;
List<Child> cList = new ArrayList<Child>() ;
doTest(pList) ;
doTest(cList) ;
}
}
OK, 编译运行正常。
但如果换成如下代码:
public static void doTest(List<Parent> list) {
}
则 :
doTest(cList) ;编译报错,这是因为后者编译器认为两者类型是不一致的,且在编译期间就确定了,而前者表示运行时才确定。
深入的理解推荐这位的博客:http://www.linuxidc.com/Linux/2013-10/90928.htm
分享到:
相关推荐
Java Generics and Collections 英文版,详细描述java 泛型技术
主要介绍了Java泛型的用法及T.class的获取过程解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
深入理解java泛型,包括类名泛型的定义,方法泛型定义,泛型的返回
Java泛型编程指南.pdf 此文章译自SUN的泛型编程指南
java泛型技术之发展,学习JAVA 泛型的不错东东
java 泛型接口示例 java 泛型接口示例 java 泛型接口示例
Java 泛型 super T 中 super 怎么 理解?与 extends 有何不同? - 副本
Java泛型技术之发展
这是一个使用JAVA实现的泛型编程,分为两部分,第一部分创建泛型类,并实例化泛型对象,得出相加结果。 第二部分用户自行输入0--4,选择要进行的加减乘除运算或退出,再输入要进行运算的两个数,并返回运算结果及...
java 泛型类的类型识别示例 java 泛型类的类型识别示例 java 泛型类的类型识别示例
java 泛型方法使用示例 java 泛型方法使用示例 java 泛型方法使用示例
JVM如何理解Java泛型类.doc JVM如何理解Java泛型类.doc
java,学习java泛型,java培训之泛型.pptxjava培训之泛型.pptxjava培训之泛型.pptxjava培训之泛型.pptx
JAVA泛型源代码实现以下功能:返回数组元素的最大值/最小值下标;判断数组元素是否按升序排列;T对象数组排序;二分法查找key元素;
思维导图之Java泛型详解
学习和理解Java泛型的基本概念和语法; 实际项目中需要使用泛型来增加类型安全性和重用性的开发任务。 目标: 本代码资源的目标是帮助读者理解泛型的用法和优势,并通过实际的示例代码加深对泛型的掌握。读者可以...
1.java泛型定义.zip1.java泛型定义.zip1.java泛型定义.zip1.java泛型定义.zip1.java泛型定义.zip1.java泛型定义.zip1.java泛型定义.zip1.java泛型定义.zip1.java泛型定义.zip1.java泛型定义.zip1.java泛型定义.zip1....
对java泛型以及反射机制进行原理和应用上的讲解,帮助初学者对这两个概念进行更轻松的掌握