Java 泛型成员的调用成员函数
我有一个超类(GraphNode)和一个子类(AStarNode)。 两者都可以是另一个类的成员,这就是为什么我将使用它的类转换为泛型类(GraphEdge) 在这个类中,我想调用超类的一些成员函数,但编译器抱怨:Java 泛型成员的调用成员函数,java,generics,inheritance,Java,Generics,Inheritance,我有一个超类(GraphNode)和一个子类(AStarNode)。 两者都可以是另一个类的成员,这就是为什么我将使用它的类转换为泛型类(GraphEdge) 在这个类中,我想调用超类的一些成员函数,但编译器抱怨: The method addEdge(GraphEdge<T>) is undefined for the type T 类型T的方法addEdge(GraphEdge)未定义 我如何解决这个问题,或者我的方法是否还可以 下面是一些更好地描述场景的代码: public
The method addEdge(GraphEdge<T>) is undefined for the type T
类型T的方法addEdge(GraphEdge)未定义
我如何解决这个问题,或者我的方法是否还可以
下面是一些更好地描述场景的代码:
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);
}
}
公共类图形节点{
保护图;
公共图形边缘补遗(){
//一些代码
}
}
公共类AStarNode扩展GraphNode{
受保护的前体;
}
//from和to属性可以是AStarNode或GraphNode
公共类GraphEdge扩展实体{
保护T不受伤害;
保护T到;
公共方法(){
从.增补(本);
}
}
GraphEdge类使用的泛型类型可以是任何类型,而不仅仅是GraphNode。宣言应该是
public class GraphEdge<T extends GraphNode> extends Entity {
protected T from;
protected T to;
}
公共类GraphEdge扩展实体{
保护T不受伤害;
保护T到;
}
此外,由于GraphEdge是泛型类型,因此不应将其用作AStarNode中的原始类型:
public class AStarNode extends GraphNode {
protected GraphEdge<PutSomeTypeHere> predecessor;
}
公共类AStarNode扩展GraphNode{
受保护的前体;
}
为了确保我们谈论的是同一件事,请发布一个简短的代码片段,说明类之间的关系。我添加了一些代码来描述该场景。谢谢,只有52个部分需要参数化,但没关系。你觉得我的方法怎么样?有更好的吗?如果不知道这些类的用途、它们代表什么以及它们是如何使用的,那就很难说了。