我想确保一个集合只能容纳一种类型。
可以说有这样的方法。
public Collection<Students> getStudents();
可以编写以下代码。
Collection students = getStudents();
students.add(new Book());
Book
不延长Student
。现在集合学生包含错误的对象。我怎样才能确保这条线Collection students = getStudents();
是不可能的?
我想确保一个集合只能容纳一种类型。
可以说有这样的方法。
public Collection<Students> getStudents();
可以编写以下代码。
Collection students = getStudents();
students.add(new Book());
Book
不延长Student
。现在集合学生包含错误的对象。我怎样才能确保这条线Collection students = getStudents();
是不可能的?
这称为原始类型。引入原始类型是为了向后兼容 - 基本上,旧代码仍然适用于较新的 JDK。
您可以javac
使用 对原始类型的使用发出警告-Xlint:rawtypes
,并且在 IDE 中您可以将其设为实际错误,但它仍然是基本有效的 Java。
如果每次实例化集合时都使用Collections.checkedCollection() ,则可以在运行时强制执行它。诚然,这会有点痛苦。:)
Jon Skeet 给出了正确的答案。如果使用原始类型,您可以在属性(或项目属性)上定义 Java 编译器以获取错误。
你应该使用这种格式:
Collection<Students> s = students.getStudents();