我正在尝试重构我的一些代码并意识到我需要创建一个抽象类来拥有抽象方法。但是,我遇到了打字问题,我不确定问题是什么(因此,不确定解决方案是什么)。我有抽象的超类:
abstract public class CondInd<T> {
abstract public double score(CondInd<T> n);;
abstract public ArrayList<Collection<CondInd<T>>> search();;
abstract public void increaseScore(Set<CondInd<T>> input);;
}
我有我的子类:
public class Node<T> extends CondInd<T> {
public double score(Node<T> nodelst){ //EDITED thanks to Martin
return 0.0;
}
public ArrayList<Collection<Node<T>>> search(){ //To Implement
return new ArrayList<Collection<Node<T>>>();
}
我遇到的问题是Node中实现的方法没有覆盖超类中的那些,因为它表示Node中已实现方法的返回类型与超类中的返回类型不匹配。
这与打字有关,但我对泛型类型和抽象类不是很好。