作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在尝试用节点和边表示一个图。
我有一个 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
方法放入一个单独的类中,该类由 NodeType
和 EdgeType
参数化:
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/
我是一名优秀的程序员,十分优秀!