3

我想确保一个集合只能容纳一种类型。

可以说有这样的方法。

public Collection<Students> getStudents();

可以编写以下代码。

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

Book不延长Student。现在集合学生包含错误的对象。我怎样才能确保这条线Collection students = getStudents();是不可能的?

4

4 回答 4

13

这称为原始类型。引入原始类型是为了向后兼容 - 基本上,旧代码仍然适用于较新的 JDK。

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

于 2013-09-04T10:08:46.847 回答
7

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

于 2013-09-04T10:17:20.260 回答
5

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

在此处输入图像描述

于 2013-09-04T10:18:41.013 回答
0

你应该使用这种格式:

    Collection<Students> s = students.getStudents();
于 2013-09-04T10:13:25.653 回答