我想确保集合只能容纳一种类型。
让我们说有这样一种方法。
public Collection<Students> getStudents();我们可以编写以下代码。
Collection students = getStudents();
students.add(new Book());Book不扩展Student。现在,集合学生包含一个错误的对象。如何确保这行Collection students = getStudents();是不可能的?
发布于 2013-09-04 10:17:20
如果每次实例化集合时都使用Collections.checkedCollection(),则可以在运行时强制执行它。诚然,这会有点痛苦。:)
发布于 2013-09-04 10:08:46
这叫做http://www.angelikalanger.com/GenericsFAQ/FAQSections/ParameterizedTypes.html#Raw%20Types。原始类型是为了向后兼容性而引入的,因此旧代码基本上仍然适用于较新的JDK。
您可以对使用javac的原始类型发出-Xlint:rawtypes警告,在IDE中,您可能会使它成为一个实际的错误,但它仍然是基本有效的-Xlint:rawtypes。
发布于 2013-09-04 10:18:41
乔恩·斯基特做出了正确的回答。如果使用原始类型,可以在Properties (或Properties)上定义Java编译器以获得错误。

https://stackoverflow.com/questions/18610919
复制相似问题