一、泛型概述
1、泛型语法机制只在编译阶段起作用,运行阶段泛型阶段没用
2、使用泛型的好处---体现在遍历
(1)使集合中存储的元素类型统一
(2)从集合中去除的元素类型是泛型指定的类型,不需要进行大量的“向下转型”
3、泛型缺点---体现在存储
导致集合中存储的元素缺乏多样性
如泛型指定animal之后,这个集合只能存animal类型的数据,存别的会报错
4、调用子类方法,还是需要转型的
二、集合使用泛型
1、集合不使用泛型,一个集合可以存储任意不同类型的对象
List mylist-new ArrayList();//不使用泛型的定义模式
缺点:遍历时候对象种类多,需要转型的量就多,遍历效率较慢
2、集合使用泛型,一个集合只能存储指定类型的对象
//不使用泛型的定义模式
List<String> mylist-new ArrayList<String>();// 最初写法
List<String> mylist-new ArrayList<>();//泛型的自动类型推断机制:钻石表达式(JDK8后)
该定义,集合mylist中只能存储String类型对象,遍历效率高
但,集合中存储的元素缺乏多样性(类数组)
三、自定义泛型----类使用泛型
1、类上加泛型-----<>里任意写一个字母作为标识符(随便写),表示该类可以使用泛型
2、调用时<>内标识符可以代替为任意一种类型:String Animal Student。。。
//定义可使用泛型的类
class MyIterator<T>{
类属性、方法
}
//使用时需传入具体的类型
MyIterator<Student> m=new MyIterator<>();
3、作用:
使用该泛型类的时候,才把类型明确下来,这样明确了什么类型,该类就代表着什么类型
在使用的时候就不用担心强转问题和运行时转换异常问题