在合成中使用集合

时间:2014-12-09 15:07:11

标签: java

所以,我有一个与另一个类的许多实例有组合关系的类。

我使用了以下代码:

public class dungeon{ 
public Set<Character> character;    

 public dungeon(){
    super();
    Set<Character> = new Set<Character>;
}
}

但这不起作用。 (可能很明显,但我不知道该怎么做)

我该如何修复此代码?

3 个答案:

答案 0 :(得分:3)

这不起作用,因为Set是一个接口而你无法实例化接口。

您必须使用其中一个实现Set接口的类,例如TreeSet

character = new TreeSet<Character>();

HashSet

character = new HashSet<Character>();
顺便说一句,将character设为私有而非公开是个好主意(参见Encapsulation)。

答案 1 :(得分:1)

这是语法错误:

public dungeon(){ super(); character = new HashSet<Character>; }

HashSet,或任何实现Set interface的类。

答案 2 :(得分:1)

Set是界面。所以你不能用new创建它。你需要一个实现的对象。 HashSet可能很有用。

public class dungeon{ 
   public Set<Character> character;    
   public dungeon(){
      super();
      character =  new HashSet<String>();
   }
}