0

考虑这是接口:

public interface Node {
    Node next();
    Node prev();
    void setNext(Node next);
    void setPrev(Node prev);
    void setVal(int val);
    int getVal();
}

我想知道如何实例化这个类,例如:

Node p = tail;

我想用这样的东西。

4

4 回答 4

2

您不能为接口创建实例,而是创建一些类来实现此接口并为该类创建实例

public class NodeImpl implements Node{
// your impl     
 }

然后

 NodeImpl tail = new NodeImpl();
 Node p =tail;
于 2013-10-14T13:22:11.093 回答
2

Node是一个接口,而不是一个接口类(没有这样的东西)。简而言之,您不能实例化接口或抽象类;你只能实例化一个具体的类。

举个例子,如果tail它的类型要么是,要么Node是实现/扩展的类/接口Node,那么分配就会起作用。

如果您需要创建一个新对象,代码将类似于:

public interface Node { ... }

public class NodeImpl implements Node { ... }

Node p = new NodeImpl();
于 2013-10-14T13:24:26.207 回答
0

对于接口,您只能对初始化(匿名类)执行类似的操作:

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();
于 2013-10-14T13:27:27.470 回答
0

最好创建一个实现这个接口的类。

但是,你仍然可以写:

Node n = new Node() {
  //and here you MUST implement all Node methods
};
于 2013-10-14T13:27:51.200 回答