2014-04-05 78 views
0

考虑以下内部类:声明的类的枚举类内部作为静态成员

private static class Node<E> { 
    public E value; 
    public Node<E> next; 
    public Node<E> previous; 

    public Node(final E value) { 
     this.value = value; 
    } 

    public boolean hasNext() { 
     return (next != null); 
    } 

    public boolean hasPrevious() { 
     return (previous != null); 
    } 

    @Override 
    public String toString() { 
     return "(" + value + ")"; 
    } 
} 

是否有一个(直观的)的方式来声明一个FAKE_HEADFAKE_TAIL变量?

我知道我可以添加以下的类中:

public static Node<E> FAKE_HEAD = new Node<>(null); 
public static Node<E> FAKE_TAIL = new Node<>(null); 

不过,现在我附上状态,不应该有状态,这我关注了一下有一个成员变量。

实际上,当我得到一个Node<E> node并且想要检查它是否是假冒的头部时,我会打电话给if (node == FAKE_HEAD)

我想它是一个枚举,如:

public static enum Node<E> { 
    FAKE_HEAD, 
    FAKE_TAIL 
} 

然而,枚举也应该是Node<E>,因为我希望能够引用FAKE_HEADNode<E>

我该如何实现这样的设计?将创建一个Node<E>接口和class ImplementedNode<E> implements Node<E>(更好的名字想要)类和enum EnumNode<E> implements Node<E>工作?

+0

我只是使用静态字段,但使他们最终。我认为枚举方法会使它过于复杂。例如,如果您引入了一个接口,那么您可能需要在其中声明节点行为,然后枚举将必须实现这些行为。 –

回答

0

会创建一个Node接口并拥有一个类ImplementedNode实现Node(需要更好的名称)类和枚举EnumNode实现Node的工作?

是的,那就是我会做的。我会将它们命名为interface INodeclass Nodeenum ENode