2010-10-13 117 views
3
List listOne = new LinkedList<Shxx>();  
List<Shxx> listTwo = new LinkedList<Shxx>(); 
List listThree = new LinkedList(); 
List<Shxx> listFour = new LinkedList(); 
+4

简短的回答:使用第二个版本,丢弃其余的 – 2010-10-13 08:51:02

回答

7
List listOne = new LinkedList<Shxx>(); 

丢掉类型信息,不妨使用泛型。

List<Shxx> listTwo = new LinkedList<Shxx>(); 

正确使用泛型,提供类型安全。

List listThree = new LinkedList(); 

没有使用泛型(即预Java 5代码),没有类型安全。

List<Shxx> listFour = new LinkedList(); 

将导致编译器警告,但否则可以,因为该列表只能通过类型安全引用使用,并且最初为空。不应该做任何事情,因为如果你忽略关于使用原始类型的编译器警告,那么你也可能会忽略那些与此不一样的其他人。从泛型中获得最大类型安全的最好方法是消除所有相关的编译器警告。

+0

伟大但你的意思是什么“可能”?在第一点,你的意思是插入的元素将像对象类型的句柄? – MineIsMine 2010-10-13 09:04:17

+0

请:这是'你',而不是'你'。 – 2010-10-13 09:11:27

+0

对不起原谅我的这个错误 – MineIsMine 2010-10-13 09:18:20

1

listOnelistThree将只在代码对象(additionnally,您的IDE可能会显示这两个警告,由于listOne instanciation意味着一个未经检查中使用的检查收集的,而listThree instanciation是原料使用的清单可用什么应该是一个检查收集)。

对于这两个列表,您将能够添加任何类型的对象(String作为原型示例)。

listTwo被宣称为Shxx的经典List

对于此列表,编译器将只允许您添加Shxx类型的项目。

listFour编译宣言,使作为Shxx一个List列表可用(如listTwo)(但我不会这样的推荐写)。

最后,虽然这些列表在您的声明代码中不会以相同的方式使用,但您必须知道它们在运行时都是相同的(但您在理论上无法克服这些泛型限制很久以前)。

+0

@声明listFour编译对我来说很好。 – 2010-10-13 08:54:37

+0

@Michael_Borgwardt mmh,是的,你是的,对,我会相应地改变我的答案 – Riduidel 2010-10-13 09:06:26

+0

谢谢>>>>>它与我合作。 – MineIsMine 2010-10-13 09:22:48

相关问题