Java 实现通用顶点和边类
我想实现通用图类。以下是我的想法:Java 实现通用顶点和边类,java,generics,Java,Generics,我想实现通用图类。以下是我的想法: public abstract class VertexBase<V extends VertexBase<V, E>, E extends EdgeBase<V, E>> { public final HashMap<V, E> inEdges = new HashMap<>(); public final HashMap<V, E> outEdges = new Has
public abstract class VertexBase<V extends VertexBase<V, E>, E extends EdgeBase<V, E>> {
public final HashMap<V, E> inEdges = new HashMap<>();
public final HashMap<V, E> outEdges = new HashMap<>();
}
public abstract class EdgeBase<V extends VertexBase<V, E>, E extends EdgeBase<V, E>> {
public final V fromVertex;
public final V toVertex;
public EdgeBase(V from, V to) {
fromVertex = from;
toVertex = to;
from.outEdges.put(to, get());
to.inEdges.put(from, get());
}
protected abstract E get();
}
编译器抱怨我在调用构造函数中的可重写方法
有没有更好的实现方法?当您实现扩展EdgeBase的新类时,您需要将所有E类型替换为Edge,并且Edge必须是Extended EdgeBase
public class EdgeBaseImpl<V extends VertexBase<V, Edge>> extends EdgeBase<V, Edge> {
...
@Override
protected Edge get() {
return this;
}
}
public类EdgeBase扩展了EdgeBase{
...
@凌驾
受保护的边get(){
归还这个;
}
}
当您实现扩展EdgeBase的新类时,需要将所有E类型替换为Edge,并且Edge必须扩展EdgeBasepublic class EdgeBaseImpl<V extends VertexBase<V, Edge>> extends EdgeBase<V, Edge> {
...
@Override
protected Edge get() {
return this;
}
}
public类EdgeBase扩展了EdgeBase{
...
@凌驾
受保护的边get(){
归还这个;
}
}