2

我有一个超类(GraphNode)和子类(AStarNode)。两者都可以是另一个类的成员,这就是为什么我将使用它的类变成泛型类(GraphEdge)的原因。

在这个类中,我想调用超类的一些成员函数,但编译器抱怨:

The method addEdge(GraphEdge<T>) is undefined for the type T

我该如何解决这个问题,或者我的方法还可以吗?

下面是一些更好地描述场景的代码:

public class GraphNode {
   protected Graph graph;

   public GraphEdge addEdge(){
   //some code
   }
}

public class AStarNode extends GraphNode {
   protected GraphEdge predecessor;
}

//The from and to properties can be either AStarNode or GraphNode
public class GraphEdge<T> extends Entity {
   protected T from;
   protected T to;

   public someMethod(){
       from.addEdge(this);
   } 

}
4

1 回答 1

6

您的 GraphEdge 类使用可以是任何东西的泛型类型,而不仅仅是 GraphNode。声明应该是

public class GraphEdge<T extends GraphNode> extends Entity {
   protected T from;
   protected T to;
}

此外,由于 GraphEdge 是一个泛型类型,你不应该将它用作 AStarNode 中的原始类型:

public class AStarNode extends GraphNode {
    protected GraphEdge<PutSomeTypeHere> predecessor;
}
于 2012-05-10T17:06:10.630 回答