将类中的类的枚举声明为静态成员

时间:2014-04-05 19:32:37

标签: java enums

考虑以下内部类:

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_HEAD引用为Node<E>

我将如何实施此类设计?是否会创建一个Node<E>界面,并且class ImplementedNode<E> implements Node<E>(更好的名称)类和enum EnumNode<E> implements Node<E>有效?

1 个答案:

答案 0 :(得分:0)

  

创建Node接口并使用ImplementedNode类实现Node(更好名称)类和枚举EnumNode实现Node工作吗?

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