无法实例化AbstractSet类

时间:2011-11-08 06:02:58

标签: java generics abstract-class

好的,我一直在寻找这个问题。 我一直收到一个错误,我无法实例化abstractSet。 它不断要求通用。我添加了通用但仍然没有骰子。

import java.util.AbstractSet;
import java.util.Set;
public class UnorderedTree{

private Object root;
private Set subtrees; //Switched to AbstractSet
private int size;

public UnorderedTree(Object root){
     this(root);
     subtrees = new AbstractSet(); //ERROR HERE WITH <Object>
     size=1;
   }
}

任何指针都会有所帮助

4 个答案:

答案 0 :(得分:6)

顾名思义, AbstractSet 是抽象的,你无法实例化它。正如其javadoc所说:

  

此类提供Set接口的骨干实现,以最大限度地减少实现此接口所需的工作量。

您应该使用一些具体的设置,例如 HashSet

答案 1 :(得分:3)

AbstractSet是一个“抽象”基类,无法实例化。它有一个受保护的构造函数,它被扩展此抽象类的类所覆盖。

请查看javadoc以获取更多帮助。

此类的直接已知子类是:ConcurrentSkipListSet,CopyOnWriteArraySet,EnumSet,HashSet,TreeSet - 您可能对其中一个感兴趣。

祝你好运!

答案 2 :(得分:2)

AbstractSet是一个抽象类。您无法实例化抽象类,因为它们(通常)不包含它们所定义类型的完整实现。它与泛型无关。

答案 3 :(得分:1)

您无法初始化abstract类。

Java 6 API,这是AbstractSet类的定义。

public abstract class AbstractSet<E>
extends AbstractCollection<E>
implements Set<E>

有关详细信息,请参阅Java API documentation

您可以使用以下方法克服此编译错误:

private Set<YourObjType> subtrees = new HashSet<YourObjType>();