Не могу создать экземпляр класса AbstractSet - PullRequest
2 голосов
/ 08 ноября 2011

Хорошо. Я уже давно ищу эту проблему. Я получаю сообщение об ошибке, которое не могу создать 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 ]

6 голосов
/ 08 ноября 2011

Как следует из названия, AbstractSet является абстрактным, вы не можете создать его экземпляр.как сказал его javadoc:

Этот класс предоставляет скелетную реализацию интерфейса Set, чтобы минимизировать усилия, необходимые для реализации этого интерфейса.

Вы должны использовать какой-то конкретный набор, такой как HashSet .

3 голосов
/ 08 ноября 2011

AbstractSet - это «абстрактный» базовый класс, для которого не может быть создан . Он имеет защищенный конструктор, который переопределяется классами, расширяющими этот абстрактный класс.

Пожалуйста, посмотрите на javadoc для получения дополнительной помощи.

Прямые известные подклассы этого класса: ConcurrentSkipListSet, CopyOnWriteArraySet, EnumSet, HashSet, TreeSet - вы, вероятно, заинтересованы в одном из них.

Удачи!

2 голосов
/ 08 ноября 2011

AbstractSet - это абстрактный класс. Вы не можете создавать экземпляры абстрактных классов, потому что они (как правило) не содержат полной реализации определяемого ими типа. Это не имеет ничего общего с дженериками.

1 голос
/ 08 ноября 2011

Вы не можете инициализировать abstract классы.

Из Java 6 API - это определение класса AbstractSet.

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

Для получения дополнительной информации см. Документация по Java API .

Вы можете преодолеть эту ошибку компиляции, используя:

private Set<YourObjType> subtrees = new HashSet<YourObjType>();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...