gpt4 book ai didi

java - "Importing"Java中另一个类的泛型类型

转载 作者:行者123 更新时间:2023-12-02 04:44:57 25 4
gpt4 key购买 nike

我正在尝试用节点和边表示一个图。

我有一个 Node 类,它必须是:

public class Node<NodeType>

和另一个类 Edge,我可以以任何方式对其进行参数化。一开始我以为Edge<EdgeType> ,但由于它们有 Nodes 作为属性,我最终执行了以下操作(主要是因为 Eclipse 告诉我,如果我没有参数化 Node,它就是一个原始类型)

public class Edge<EdgeType, NodeType> {
private Node<NodeType> start;
private Node<NodeType> end;
private EdgeType value;
...
}

这使我能够在 Edge 类中毫无问题地工作,但是 Node 类中有一些方法需要使用 Edges,例如

public List<EdgeType> edgesValues(Node<NodeType> node) {
/*Returns a list of values of the edges between the node it is called on and the node given by argument*/
}

我无法使用它,因为 EdgeType 未定义。由于我无法在 Node 类中添加其他参数,因此我不知道如何将 EdgeType“导入”到其中。

最佳答案

我会将 edgesValues 方法放入一个单独的类中,该类由 NodeTypeEdgeType 参数化:

class Node<N> {
N value;
}

class Edge<E, N> {
Node<N> from;
Node<N> to;
E value;
}

class Graph<E, N> {
Node<N> newNode(N nodeVal) {
...
}

Edge<E, N> newEdge(E edgeVal, Node<N> from, Node<N> to) {
...
}

List<E> edgesValues(Node<N> node) {
...
}
}

关于java - "Importing"Java中另一个类的泛型类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29736955/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com