作为家庭作业,我正在创建一个实现Node接口的SingleLinkedNode类。
节点接口
public interface Node <T> {
static final String NULL_NODE_ERROR = "Node can't be null";
public void setNextNode(Node nextNode) throws NullPointerException;
public void setIndex(int index);
public int getIndex();
public T getData();
public Node getNextNode();
}
SingleLinkedNode类
public class SingleLinkedNode<T> implements Node<T> {
private int index;
private T data;
private SingleLinkedNode nextNode;
public SingleLinkedNode() {
}
public SingleLinkedNode(int index) {
this.index = index;
}
public SingleLinkedNode(int index, SingleLinkedNode nextNode) {
this.index = index;
this.nextNode = nextNode;
}
@Override
public void setNextNode(SingleLinkedNode nextNode) throws NullPointerException{
if (nextNode == null){
throw new NullPointerException(NULL_NODE_ERROR);
}
this.nextNode = nextNode;
}
@Override
public void setIndex (int index){
this.index = index;
}
@Override
public int getIndex() {
return this.index;
}
@Override
public T getData() {
return this.data;
}
@Override
public SingleLinkedNode getNextNode() {
return this.nextNode;
}
}
在类的setNextNode(SingleLinkedNode nextNode)方法中,它表示即使SingleLinkedNode实现Node,我也没有实现接口的setNextNode(Node nextNode)方法。
但是,如果我将类方法完全保留为接口,那么就说Node不能转换为SingleLinkedNode,这很明显。
是否有任何正确的方法来覆盖此方法并确保该方法仅接受SingleLinkedNode对象作为参数?
我考虑过施法,但我不确定这是否正确。
答案 0 :(得分:0)
谢谢所有解决方案如下
@Override
public void setNextNode(Node nextNode) throws NullPointerException, IllegalArgumentException{
if (nextNode == null){
throw new NullPointerException(NULL_NODE_ERROR);
}
if ( ! (nextNode instanceof SingleLinkedNode) ) {
throw new IllegalArgumentException ("Node is not SingleLinkedNode");
}
this.nextNode = (SingleLinkedNode) nextNode;
}