您可以创建通用 方法 以及通用类型。使用这些,
GraphUtils可以像这样解决问题方法:
static <T extends Node<T>> void addNewNeighbors1a(T node, T newNode){ node.addNeighbor(newNode); print("Add city to node", node.neighbors());}static <T extends Node<T>> void addNewNeighbors2(T node, T newNode){ node.addNeighbor(newNode); print("Add concrete node to node", node.neighbors());}嘿,等一下…这些是相同的方法!
事实证明,由于它们仅依赖于的接口
Node,因此您只需要其中之一即可处理任何
Node实现。
在将来,您可能会发现有必要
Node像这样更改界面:
public abstract <S extends T> void addNeighbor(S n);



