集合(9):泛型高级(通配符)

发布时间:2022-06-27 发布网站:脚本宝典
脚本宝典收集整理的这篇文章主要介绍了集合(9):泛型高级(通配符)脚本宝典觉得挺不错的,现在分享给大家,也给大家做个参考。

集合(9):泛型高级(通配符)

(1)泛型通配符<?>
        任意类型,如果没有明确,那么就是Object以及任意的Java类了
(2)<? extends E>
        向下限定,E及其子类
(3)<? suPEr E>
        向上限定,E及其父类
@H_126_5@
//定义一个父类
public class Animal {
}

//定义一个子类继承父类
class Dog extends Animal {
}

//定义一个子类继承父类
class Cat extends Animal {
}
public class GenericDemo2 {
    public static void main(String[] args) {
        //前面我们学到,当泛型里面的类型只用一个,并且明确数据类型的时候,前后必须要写一致
        ArrayList<Animal> list1 = new ArrayList<Animal>();
        ArrayList<Dog> list2 = new ArrayList<Dog>();
        ArrayList<Object> list3 = new ArrayList<Object>();
        
        //泛型通配符<?>
        //任意类型,如果没有明确,那么就是Object以及任意的Java类了
        //左边使用泛型通配符<?>,表示占个位置,但不知道具体类型,右边可以是任意类型
        ArrayList<?> objects1 = new ArrayList<Animal>();
        ArrayList<?> objects2 = new ArrayList<Dog>();
        ArrayList<?> objects3 = new ArrayList<Object>();
        
        
        //<? extends E> 向下限定,E及其子类(extends表示继承)
        //左边使用<? extends E> ,右边只能是E类或者E的子类
        ArrayList<? extends Animal> list4 = new ArrayList<Animal>();
        ArrayList<? extends Animal> list5 = new ArrayList<Dog>();
        ArrayList<? extends Animal> list6 = new ArrayList<Cat>();
	//ArrayList<? extends Animal> list7 = new ArrayList<Object>();
        //右边若使用E的父类,就会报错
        
         //<? super E> 向上限定,E及其父类
        //左边使用<? super E>,右边只能是E类或者E的父类
        ArrayList<? super Animal> list7 = new ArrayList<Animal>();
        ArrayList<? super Animal> list8 = new ArrayList<Object>();
	//ArrayList<? super Animal> list9 = new ArrayList<Dog>();
        //右边若使用E的子类,就会报错
    }
}

脚本宝典总结

以上是脚本宝典为你收集整理的集合(9):泛型高级(通配符)全部内容,希望文章能够帮你解决集合(9):泛型高级(通配符)所遇到的问题。

如果觉得脚本宝典网站内容还不错,欢迎将脚本宝典推荐好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。