好的,我一直在寻找这个问题。
我一直收到一个错误,我无法实例化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;
}
}
任何指针都会有所帮助
答案 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>();