码迷,mamicode.com
首页 > 其他好文 > 详细

第二十三条:请不要在新代码中使用原生态类型

时间:2015-05-04 11:45:40      阅读:116      评论:0      收藏:0      [点我收藏+]

标签:

声明中具有一个或者多个类型参数(type parameter)的类或者接口,就是泛型。

泛型类和泛型接口统称为泛型(generic type)。

每种泛型定义一组参数化的类型,构成格式为:先是类或者接口的名称,接着用尖括号(<>)把对应于泛型形式类型参数的实际类型参数列表括起来。

原生态类型就像从类型声明中删除了所有的泛型信息一样。实际上,原生态类型List与Java平台没有泛型之前的接口类型List完全一样。

如果不提供类型参数,只是使用集合类型和其他泛型的原生态类型仍然是合法的,但是不应该这么做。如果使用原生态类型,就失掉了

泛型在安全性和表述性方面的所有优势。既然不应该使用原生态类型,为什么Java还要允许使用原生态类型呢?因为这是为了兼容性,因为

在JDK1.5之前,Java已经进入它的第二个十年,而在这之前,Java没有泛型,为了以前的代码的仍然能够正常使用,促使Java仍然支持原生态

类型。

虽然不应该在新代码中使用像List这样的原生态类型,使用参数化的Object类型以允许插入任意对象,如List<Object>,这还是可以的。

原生态List类型和List<Object>类型之间的区别:不严格的说,前者逃避了泛型检查,后者则明确告知编译器,它能够持有任意类型的对象。

可以将List<String>类型的对象赋给原生态List类型的变量,但是不能将List<String>类型的对象赋给List<Object>类型的变量。因为泛型

有自己的子类型化的规则,List<String>是原生态List的一个子类型,而不是参数化类型List<Object>的子类型。因此使用像List这样的原生态

类型,就会失掉类型安全性,但是如果使用像List<Object>这样的参数化类型,则不会。

第二十三条:请不要在新代码中使用原生态类型

标签:

原文地址:http://www.cnblogs.com/wangliyue/p/4475544.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!