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

Sur*_*nut 3 java generics collections

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

可以说有这样的方法.

public Collection<Students> getStudents();
Run Code Online (Sandbox Code Playgroud)

可以写下面的代码.

Collection students = getStudents();
students.add(new Book());
Run Code Online (Sandbox Code Playgroud)

Book不延伸Student.现在Collection学生包含一个错误的对象.我怎样才能确保这条线Collection students = getStudents();不可行?

Jon*_*eet 13

这称为原始类型.引入了原始类型以实现向后兼容性 - 因此旧代码基本上仍可用于较新的JDK.

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

  • @RAM:我个人使用Eclipse. (2认同)

Mue*_*uel 7

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


小智 5

Jon Skeet做出了正确的答案.如果使用raw-type,则可以在Properties(或Project-Properties)上定义Java Compiler以获取错误.

在此输入图像描述