1.带<>就是用了泛型;
2. 泛型类指定了T,那么类中的普通方法的参数就确定了,和泛型类的T参数一致,但是泛型方法没有这个限制
- 不使用泛型的话,由于类型是object类,而调用子类的独有方法时,就需要强制类型转换
- /* 1、JDK5.0之后推出的新特性:泛型 2、泛型这种语法机制,只在程序编译阶段起作用,只是给编译器参考的。(运行阶段泛型没用!) 3、使用了泛型好处是什么?
第一:集合中存储的元素类型统一了。
第二:从集合中取出的元素类型是泛型指定的类型,不需要进行大量的“向下转型”!4、泛型的缺点是什么?
导致集合中存储的元素缺乏多样性!
大多数业务中,集合中元素的类型还是统一的。所以这种泛型特性被大家所认可。 */
// ArrayList<这里的类型会自动推断>(),前提是JDK8之后才允许。
// 自动类型推断,钻石表达式!
List myList = new ArrayList<>();
//泛型的类型参数只能是类类型(包括自定义类),不能是简单类型
定义的泛型类,就一定要传入泛型类型实参么?
并不是这样,在使用泛型的时候如果传入泛型实参,则会根据传入的泛型实参做相应的限制,此时泛型才会起到本应起到的限制作用。如果不传入泛型类型实参的话,在泛型类中使用泛型的方法或成员变量定义的类型可以为任何的类型。
Java泛型类的继承关系
以 Collections 为例,ArrayList 实现了 List, 同时 List 扩展自 Collections. 故 ArrayList 是 List 的子类型,List 是 Collections 的子类型。只要类型参数 E 一致,这三个类的继承关系就得到保持。
Java泛型——类泛型、接口泛型、方法泛型的实现及泛型限定与类型变化关系
泛型方法
<E> List<E> selectList(String statement);
//泛型:左边来判断右边,即此时E是左边的student类型
List<Student> students = sqlSession.selectList(sqlId);