泛型2
public class GenericsDemo1 {
public static void main(String[] args) {
/*
泛型不具备继承性,但是数据具备继承性
*/
ArrayList<Ye> list1 = new ArrayList<>();
ArrayList<Fu> list2 = new ArrayList<>();
ArrayList<Zi> list3 = new ArrayList<>();
method(list1);
//method(list2);//报错
//method(list3);//报错
list1.add(new Ye());//可以
list1.add(new Fu());//可以
list1.add(new Zi());//可以
}
public static void method(ArrayList<Ye> list){
}
}
class Ye{
}
class Fu extends Ye{
}
class Zi extends Fu{
}
---------------------------------------
泛型的通配符
public class GenericsDemo2 {
public static void main(String[] args) {
/*
定义一个方法,形参是一个集合,但集合类型不确定,
*/
}
/*
此时泛型方法有个弊端:什么类型的数据都能接受
希望方法只能接收Ye1及其子类的数据
此时可以使用泛型的通配符:
? 表示未知类型
? extends E 表示可以接收E类型及其子类的数据
? super E 表示可以接收E类型及其父类的数据
*/
public static<E> void method(ArrayList<E> list){
}
public static void method1(ArrayList<?> list){
}
public static void method2(ArrayList<? extends Ye1> list){
}
public static void method3(ArrayList<? super Zi1> list){
}
}
class Ye1{
}
class Fu1 extends Ye1{
}
class Zi1 extends Fu1{
}
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来源 Hexo!