日期:2014-05-18  浏览次数:20758 次

泛型在实例化不指定类型有什么性能损耗之类的吗
  今天看到MyEclipse提示这样的警告觉得很好奇。

  ArrayList al=...
  ArrayList<Student> al=...

  例如上面的两种方式,第一种有啥不好?

------解决方案--------------------
第二种更规范。
规范带来的效果就是调错的时候更容易发现错误
就像一个类名你小写应该不会报错,但是肯定会提示不合适。
------解决方案--------------------
如果不指定 系统默认设置为object 直接转到基类 性能不会有啥损耗  但是如果你类里边否些自定义的方法 如果 那就会出错
------解决方案--------------------

不用泛型的话,你ArrayList 中什么都可以装,当取出元素时,要进行向下转型,向下转型可不是安全的呀!
------解决方案--------------------
首先,转型就比较消耗资源
其次,因为类型不明确,就会有运行时错误出现,例如classcastexception等,
对你自己并不是很有利,尤其是你这样的代码作为底层代码被封装给其他程序调用的时候,你给出的底层功能代码如果不可靠,上层代码也肯定不可靠
------解决方案--------------------
使用泛型能让编译器检查增加的对象类型是否安全,还有取对象的时候不用再显式的强制转换了。
------解决方案--------------------
引用:
使用泛型能让编译器检查增加的对象类型是否安全,还有取对象的时候不用再显式的强制转换了。

说的很好。
------解决方案--------------------
没有损耗,只是在编译时进行检查而已。
------解决方案--------------------
没有性能损耗,只是第二种,会在编译期帮你检查在list中操作的各个对象,是否为Student类型的。