【发布时间】:2011-11-28 10:04:57
【问题描述】:
如果我像下面这样声明和实例化一个新的类型安全集合,编译器会抛出一个警告
List<String> list = new ArrayList(); // compiler warning
List<String> anotherList = new ArrayList<String>(); //this is normal and ok.
列表对象似乎是类型安全的,因为我不能在其中放入除 String 之外的任何其他对象。那么,使用这样的声明有什么陷阱吗?
【问题讨论】:
-
你是对的,在这种情况下它是安全的,但如果你将声明和实例化分开,你会很高兴看到这样的警告,提醒你使用类型化集合避免运行时意外。养成尽可能指定类型的习惯对您来说是一件好事。
-
在当前版本的Java SE中,可以写
List<String> list = new ArrayList<>();。可惜你不能写,比如List<String> list = new();,但它有点帮助。