【发布时间】:2015-09-21 19:42:50
【问题描述】:
我正在尝试在所述类的方法中调用通用抽象类的构造函数。下面的代码显示了这一点:
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
}
}
}
但我不断收到无法实例化类型节点的错误。我想在函数 find_inters() 中创建一个新的 Node 对象,但我不能。有人知道原因/可能的解决方案吗?
【问题讨论】:
-
如果需要实例化类型,为什么要设置
abstract? -
简单,因为还有其他方法我还不能实现,所以我必须将它们抽象化。删除抽象会允许我实例化一个节点吗? (因为我总能找到抽象方法的解决方法)
-
是的,但是你不能有未实现的方法。
-
我明白了,还有其他方法可以让我有一个未实现的方法吗?我可以在方法体中写一些垃圾代码,稍后再实现,但我想要一个更好的解决方案
标签: java generics constructor abstract