就像下面那样,在myeclipse里报警告,有什么坏处吗?
List list = new ArrayList();
坏处就是你遍历list的时候,需要取出里面元素强转之后才能使用,,
搜索下不加泛型的的影响
警告是警告没有加泛型吗?集合中的泛型主要是对放进集合的对象类型的规范,取出来的时候也可以不用强制转换,这样就不会报ClassCast的错误
(1)更严格的编译检查,避免编译异常。集合记不住它内部的元素类型,你加了泛型之后,它就知道要什么了,不是这样类型的,它异常给你看。
(2)不需要强制转型。有泛型能记住内部元素类型,取出时就不必强制转型。
(3)代码更简洁更健壮。
加了有这些好处,反之则是不可取之处。
低版本不兼容,如果想兼容最近的低版本,还是加上
没添加泛型,简单的理解泛型的就是在开始的管的很严(必须要写类型)但后续很简单很方便(不用类型转化)
加上就明白你这个到底是什么类型的。
真是的 加上又不会怀孕
没啥坏处,只要取值时类型强制转化就好
通过在变量声明中捕获这一附加的类型信息,泛型允许编译器实施这些附加的类型约束。
类型错误现在就可以在编译时被捕获了,而不是在运行时当作ClassCastException展示出来。
将类型检查从运行时挪到编译时有助于您更容易找到错误,并可提高程序的可靠性。
· 消除强制类型转换。泛型的一个附带好处是,消除源代码中的许多强制类型转换。
这使得代码更加可读,并且减少了出错机会。
尽管减少强制类型转换可以降低使用泛型类的代码的罗嗦程度,但是声明泛型变量会带来相应的罗嗦
如果不加约束的话,list里面可以add 各种类型。。然而这些在你 编译时期是不会,报错的。
只有你遍历的时候会发现类型不一致的问题。导致意想不到的问题出现:
List list=new ArrayList();
list.add("sss");
list.add(1);
for (Object obj:list){
System.out.println(obj);
}
只能通过强转才能保证数据的一致性。并且强转在编译器不回提示是否可以转换ok的。