昆明java培训
达内昆明广州春城路

18487146383

热门课程

Java中泛型的全面解析——通配符与上下界

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

这次我们请来了昆明达内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 中泛型的全面解析——类型系统

“因材施教,分级培优”十问十答

达内举办“2016授课讲师资格认证培训“,不断提升教学品质

达内牵手猿圈科技,打造技能测评、学习、就业一站式服务

毕业三年之内能转行学编程吗?

选择城市和中心
贵州省

广西省

海南省