0

我正在尝试创建一个包含“Vertex3<T>”实例的集合。我对创建集合的行有一点问题:

public Set<Vertex3<Integer>> verticies = new Set<Vertex3<Integer>>();

Eclipse 在等号右侧的“Set”部分用红色下划线,并带有错误消息“无法实例化类型 Set<Vertex3<Integer>> ”。

'Vertex3<T>' 定义如下:

public class Vertex3 <T> {
    public T x;
    public T y;
    public T z;

    public Vertex3() {
        // do nothing
    }

    public Vertex3(T x, T y, T z) {
        this.x = x;
        this.y = y;
        this.z = z;
    }

    public Vertex3(T x, T y) {
        this.x = x;
        this.y = y;
    }
}

可以提供的任何帮助表示赞赏。

4

3 回答 3

1

Set 是一个接口,这就是为什么你不能实例化它。您必须实例化一个具体的类型,例如 HashSet(或 TreeSet,或 LinkedHashSet):

public Set<Vertex3<Integer>> verticies = new HashSet<Vertex3<Integer>>();

HashSet 和 LinkedHashSet 存储唯一值... HashSet 的性能优于 LinkedHashSet,你可能想使用 HashSet。

于 2012-06-19T19:54:45.783 回答
0

正如javadoc所建议的那样,Set是一个接口:http: //docs.oracle.com/javase/6/docs/api/java/util/Set.html,因此它不能被实例化

您应该查看All Known Implementing Classes并选择最适合您的实现并使用new.

于 2012-06-19T19:54:43.473 回答
0

Set是一个接口。你不能实例化它。将右侧部分替换为 HashSet 或 TreeSet。

于 2012-06-19T19:55:05.647 回答