Я пытаюсь вызвать конструктор для общего абстрактного класса в рамках метода указанного класса. Нижеприведенный код показывает следующее:Generic abstract class constructor
public abstract class Node<T> {
public Collection <Node<T>> pars;
public Collection<Node<T>> interactors;
private boolean target = false;
private boolean multiple = false;
private T value;
//constructor for a simple node
public Node(T val){
this.value = val;
}
//constructor for a multiple interaction node
public Node(Collection<Node<T>> inter, T val){
this.interactors = inter;
this.value = val;
if (inter.size()>0){
this.multiple = true;
}
}
public void find_inters(){
ArrayList<Collection<T>> multi_interactions = search();
for (int i = 0; i < multi_interactions.size(); i++){
Node<T> a = new Node<T>(multi_interactions.get(i), this.value); <----i get compile error here
}
}
}
, но я продолжаю получать сообщение об ошибке, что я не могу создать экземпляр типа Node. Я хочу создать новый объект Node внутри функции find_inters(), но я не могу. Кто-нибудь знает, почему/возможные решения?
Если вам нужно создать экземпляр типа, зачем делать его «абстрактным»? –
простой, потому что есть другие методы, которые я не могу реализовать, поэтому я должен сделать их абстрактными. Удалит ли абстракцию, позвольте мне создать экземпляр узла? (потому что я всегда могу найти обходное решение для абстрактных методов) –
да, но тогда у вас не может быть невыполненных методов. – zapl