我想确保Collection只能容纳一个Type。
让我们说有这样的方法。
public Collection<Students> getStudents();
可以写下面的代码。
Collection students = getStudents();
students.add(new Book());
Book
不会延伸Student
。现在Collection学生包含一个错误的对象。
如何确保此行Collection students = getStudents();
不可用?
答案 0 :(得分:13)
这称为raw type。引入了原始类型以实现向后兼容性 - 因此旧代码仍然可以针对较新的JDK工作,基本上。
您可以javac
使用-Xlint:rawtypes
警告使用原始类型,并且在IDE中您可能会使其成为实际错误,但它仍然是基本上有效的Java。
答案 1 :(得分:7)
如果每次实例化Collection时都使用Collections.checkedCollection(),则可以在运行时强制执行它。不可否认,这会有点痛苦。 :)
答案 2 :(得分:5)
答案 3 :(得分:0)
您应该使用以下格式:
Collection<Students> s = students.getStudents();