【发布时间】:2012-07-07 08:46:29
【问题描述】:
我正在实现一个 Java 图形库(学习...)。因此,我写了一个界面
public interface DigraphInterface {
public boolean isEmpty();
public int size();
public boolean isAdjacent(Object v, Object w);
public void insertEdge(Object v, Object w);
public void insertVertex(Object v);
public void eraseEdge(Object o, Object w);
public void eraseVertex(Object v);
public void printDetails();
}
作为实现的第一步,我正在编写实现上述接口的 Digraph 类。但是,为了简单起见,我希望节点标识符为整数,因此我将函数定义为
@Override
public boolean isAdjacent(int v, int w) {
// TODO Auto-generated method stub
return adjList[v].contains(w) || adjList[w].contains(v);
}
但是,我遇到了错误,我需要用超类型覆盖或实现方法。有人可以向我解释这种行为的基础。另外,如果有人能解释一下,我们如何设计允许灵活添加任何类型组件的库。
【问题讨论】:
-
除了
int甚至不是Object之外,实现不能提供比接口更少的承诺。您的界面已经承诺处理任何对象。 -
那么,我该怎么做呢?当我希望实现另一个用字符串或其他东西标识节点的类时,我希望不需要更改接口。