如何确保java中的Collections只包含一个Type?

时间:2013-09-04 10:04:03

标签: java generics collections

我想确保Collection只能容纳一个Type。

让我们说有这样的方法。

public Collection<Students> getStudents();

可以写下面的代码。

Collection students = getStudents();
students.add(new Book());

Book不会延伸Student。现在Collection学生包含一个错误的对象。 如何确保此行Collection students = getStudents();不可用?

4 个答案:

答案 0 :(得分:13)

这称为raw type。引入了原始类型以实现向后兼容性 - 因此旧代码仍然可以针对较新的JDK工作,基本上。

您可以javac使用-Xlint:rawtypes警告使用原始类型,并且在IDE中您可能会使其成为实际错误,但它仍然是基本上有效的Java。

答案 1 :(得分:7)

如果每次实例化Collection时都使用Collections.checkedCollection(),则可以在运行时强制执行它。不可否认,这会有点痛苦。 :)

答案 2 :(得分:5)

Jon Skeet做出了正确的答案。如果使用原始类型,可以在属性(或项目属性)上定义Java编译器以获取错误。

enter image description here

答案 3 :(得分:0)

您应该使用以下格式:

    Collection<Students> s = students.getStudents();