课程咨询 :186 8716 1620      qq:2066486918

昆明Java培训 > 达内新闻 > Java中泛型的全面解析——通配符与上下界
  • Java中泛型的全面解析——通配符与上下界

    发布:昆明Java培训      来源:达内新闻      时间:2016-07-22

  • 这次我们请来了昆明达内java培训机构的专家来给大家讲解Java中泛型的通配符与上下界。

    在使用泛型类的时候,既可以指定一个具体的类型,如List<String>就声明了具体的类型是String;也可以用通配符?来表示未知类型,如List<?>就声明了List中包含的元素类型是未知的。通配符所代表的其实是一组类型,但具 的类型是未知的。List<?>所声明的就是所有类型都是可以的。但是List<?>并不等同于List<Object>。List<Object>实际上确定了List中包含的是Object及其子类,在使用的时候都可以通过Object来进行引用。而List<?>则其中 包含的元素类型是不确定。其中可能包含的是String,也可能是Integer。如果它包含了String的话,往里面添加Integer类型的元素就是错误的。正因为类型未知,就不能通过new ArrayList<?>()的方法来创建一个新的ArrayList对象。因为 译器无法知道具体的类型是什么。但是对于List<?>中的元素确总是可以用Object来引用的,因为虽然类型未知,但肯定是Object及其子类。考虑下面的代码:

    public void wildcard(List<> list) {

    list.add(1);//编译错误

    }

    如上所示,试图对一个带通配符的泛型类进行操作的时候,总是会出现编译错误。其原因在于通配符所表示的类型是未知的。

    因为对于List<?>中的元素只能用Object来引用,在有些情况下不是很方便。在这些情况下,可以使用上下界来限制未知类型的范围。如List<? extends Number>说明List中可能包含的元素类型是Number及其子类。而List<? super Number>则说明List中包含的是Number及其父类。当引入了上界之后,在使用类型的时候就可以使用上界类中定义的方法。比如访问List<? extends Number>的时候,就可以使用Number类的intValue等方法。

    在昆明达内java培训班的专家解说的Java中泛型的通配符与上下界是不是看懂了呢?还有同学想了解更多java知识的,请关注昆明达内java培训机构,我们会让专业的老师给同学们解答。

    推荐文章

上一篇:Java中泛型的全面解析——实例分析

下一篇:Java 中泛型的全面解析——类型系统

最新开班日期  |  更多

Java--零基础全日制班

Java--零基础全日制班

开班日期:11/30

Java--零基础业余班

Java--零基础业余班

开班日期:11/30

Java--周末提升班

Java--周末提升班

开班日期:11/30

Java--零基础周末班

Java--零基础周末班

开班日期:11/30

  • 网址:http://km .java.tedu.cn      地址:昆明市官渡区春城路62号证券大厦附楼6楼
  • 课程培训电话:186 8716 1620      qq:2066486918    全国服务监督电话:400-827-0010
  • 服务邮箱 ts@tedu.cn
  • 2001-2016 达内国际公司(TARENA INTERNATIONAL,INC.) 版权所有 京ICP证08000853号-56