考虑这是接口:
public interface Node {
Node next();
Node prev();
void setNext(Node next);
void setPrev(Node prev);
void setVal(int val);
int getVal();
}
我想知道如何实例化这个类,例如:
Node p = tail;
我想用这样的东西。
您不能为接口创建实例,而是创建一些类来实现此接口并为该类创建实例
public class NodeImpl implements Node{
// your impl
}
然后
NodeImpl tail = new NodeImpl();
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
};