ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

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

2021-12-29 02:05:18  阅读:144  来源: 互联网

标签:子类 ArrayList 通配符 集合 泛型 new 父类


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

(1)泛型通配符<?>
        任意类型,如果没有明确,那么就是Object以及任意的Java类了
(2)<? extends E>
        向下限定,E及其子类
(3)<? super E>
        向上限定,E及其父类
//定义一个父类
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的子类,就会报错
    }
}

标签:子类,ArrayList,通配符,集合,泛型,new,父类
来源: https://www.cnblogs.com/saowei/p/15743411.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有