考虑这个接口:从Java接口类创建实例
public interface Node {
Node next();
Node prev();
void setNext(Node next);
void setPrev(Node prev);
void setVal(int val);
int getVal();
}
我想知道我可以实例化这个类,例如:
Node p = tail;
我想用它是这样的。
考虑这个接口:从Java接口类创建实例
public interface Node {
Node next();
Node prev();
void setNext(Node next);
void setPrev(Node prev);
void setVal(int val);
int getVal();
}
我想知道我可以实例化这个类,例如:
Node p = tail;
我想用它是这样的。
Node
是接口,而不是接口类(没有这种东西)。简而言之,你不能实例化一个接口或一个抽象类;你只能实例化一个具体的类。
举一个例子,如果tail
的类型为Node
,或者是实现/扩展Node
的类/接口,那么分配将会正常工作。
如果你需要创建一个新的对象,代码看起来是这样的:
public interface Node { ... }
public class NodeImpl implements Node { ... }
Node p = new NodeImpl();
对于接口只能用于初始化做这样的事情(匿名类):
Node p = new Node() {
public Node next() {}
public Node prev() {}
public void setNext(Node next) {}
public void setPrev(Node prev) {}
public void setVal(int val) {}
public int getVal() {}
};
并执行所有的方法。否则,您可以创建一个示例类:
class NodeImpl implements Node {
public Node next() {}
public Node prev() {}
public void setNext(Node next) {}
public void setPrev(Node prev) {}
public void setVal(int val) {}
public int getVal() {}
}
Node p = new NodeImpl();
最好创建一个实现此接口的类。
但是,你仍然可以写:
Node n = new Node() {
//and here you MUST implement all Node methods
};
创建一个实现接口的类,然后实例化新类:'节点p = new SomeClassThatImplementsNode();' – Jesper