java中的泛型学习
泛型的理解:
1.类似于一个容器,容器是通用的,可以装任意东西,至于用来装什么,这个得使用者确定,泛型就类似于一个标签的作用,能一眼就看出,这个容器放的是什么
2.泛型,个人认为这就相当于一种标识,规范,在java编译时候就会去检查的,如果不符合类型要求,则会编译失败
泛型的好处:
1.实现类型安全,有了泛型,编译器就知道需要的类型是什么,可以及时验证
2.避免了类型的转换
示例:
1.泛型类与泛型属性:
class testgeneric<t>{
private t t; //泛型属性
}
2.泛型方法及上限值:
也可以写多个 : <t extends 上限1 & 上限2 & 。。。。> 如果是多个上限,那么都要满足
public <t extends number> t get(t t) { // t extends number :表示只能是数值类型 ,
return t;
}
3.泛型的通配符:?
1、<?>:代表可以是任意类型
2、<? extends 上限>:?代表是上限或上限的子类
3、<? super 下限>:?代表的是下限或下限的父类
示例: 想要声明一个方法,可以把一个collection集合src中的所有元素,添加到另一个collection集合dest中
public <t> void copy(collection<t> src, collection<? super t> dest){
//如果dest也是<t>类型,那么可能出现错误,如果传入一个collection<integer>,collection<string>直接就报错了
for (t object : src) {
dest.add(object);
}
}
推荐阅读