List listOne = new LinkedList<Shxx>();
List<Shxx> listTwo = new LinkedList<Shxx>();
List listThree = new LinkedList();
List<Shxx> listFour = new LinkedList();
回答
List listOne = new LinkedList<Shxx>();
丢掉类型信息,不妨使用泛型。
List<Shxx> listTwo = new LinkedList<Shxx>();
正确使用泛型,提供类型安全。
List listThree = new LinkedList();
没有使用泛型(即预Java 5代码),没有类型安全。
List<Shxx> listFour = new LinkedList();
将导致编译器警告,但否则可以,因为该列表只能通过类型安全引用使用,并且最初为空。不应该做任何事情,因为如果你忽略关于使用原始类型的编译器警告,那么你也可能会忽略那些与此不一样的其他人。从泛型中获得最大类型安全的最好方法是消除所有相关的编译器警告。
伟大但你的意思是什么“可能”?在第一点,你的意思是插入的元素将像对象类型的句柄? – MineIsMine 2010-10-13 09:04:17
请:这是'你',而不是'你'。 – 2010-10-13 09:11:27
对不起原谅我的这个错误 – MineIsMine 2010-10-13 09:18:20
listOne
和listThree
将只在代码对象(additionnally,您的IDE可能会显示这两个警告,由于listOne
instanciation意味着一个未经检查中使用的检查收集的,而listThree
instanciation是原料使用的清单可用什么应该是一个检查收集)。
对于这两个列表,您将能够添加任何类型的对象(String
作为原型示例)。
listTwo
被宣称为Shxx
的经典List
。
对于此列表,编译器将只允许您添加Shxx
类型的项目。
的listFour
编译宣言,使作为Shxx
一个List
列表可用(如listTwo
)(但我不会这样的推荐写)。
最后,虽然这些列表在您的声明代码中不会以相同的方式使用,但您必须知道它们在运行时都是相同的(但您在理论上无法克服这些泛型限制很久以前)。
@声明listFour编译对我来说很好。 – 2010-10-13 08:54:37
@Michael_Borgwardt mmh,是的,你是的,对,我会相应地改变我的答案 – Riduidel 2010-10-13 09:06:26
谢谢>>>>>它与我合作。 – MineIsMine 2010-10-13 09:22:48
- 1. 这两个声明有什么区别?
- 2. 这两个声明有什么区别?
- 3. 这两个声明有什么区别?
- 4. 这两个声明有什么区别?
- 5. &c和* c声明有什么区别?
- 6. 声明Stream与try-with-resources声明之间有什么区别?
- 7. 这些#import声明有什么区别?
- 8. 声明一个String并将其声明为final有什么区别?
- 9. XML中的“处理指令”和“声明性声明”之间有什么区别?
- 10. 这两个声明在c中有什么区别?
- 11. 这两个函数声明在JavaScript中有什么区别?
- 12. 这三个委托声明有什么区别?
- 13. 这两个声明有什么区别吗?
- 14. 这两个声明在反应JavaScript之间有什么区别?
- 15. 这两个对象的声明有什么区别?
- 16. 在声明变量时使用“”和“'和()有什么区别?
- 17. 用属性声明实例变量或不声明时有什么区别?
- 18. 正向声明一个类并声明一个类的变量有什么区别?
- 19. 声明变量“id”和“NSObject *”有什么区别?
- 20. 在vb.net中声明为new和as something = new有什么区别?
- 21. 函数声明和签名有什么区别?
- 22. 初始化字典和在Swift中声明有什么区别?
- 23. C#中“Class”和“Private Class”声明有什么区别?
- 24. [BITS 32]声明和BITS 32之间有什么区别?
- 25. 声明JavaScript数组时,“{}”和“[]”有什么区别?
- 26. datalines和卡片声明有什么区别
- 27. 声明式编程和命令式编程有什么区别?
- 28. 两个DLL声明之间的区别
- 29. 静态声明和非静态声明之间的区别
- 30. 避免Resharper为每个声明添加一个区域
简短的回答:使用第二个版本,丢弃其余的 – 2010-10-13 08:51:02