访问祖先枚举

Access to ancestors enums

我有一个 class A,看起来像这样:

public abstract class A {

    protected enum Identifier{
        HELLO,WORLD
    }

    private String identifier;

    public void setIdentifier(Identifier identifier){
        this.identifier=identifier.toString();
    }

    public String getIdentifier(){
        return identifier;
    }
}

现在 class 层次结构是这样的:

B extends A
C extends A
D extends B
E extends D

or A->B->D->E and A->C

现在,如果我想在 E 中使用 setter 或 Identifier enumA,我该怎么做。而且我还需要在 class C 中使用相同 enum 的 getter。我是否需要在每个子 classes 中创建一个单独的方法来访问祖先?

我采用的方法是:

public abstract class A {

    protected enum Identifier{
        HELLO,WORLD
    }

    protected Identifier identifier;
}

在子classE我说identifier = Identifier.HELLO;。我不知道这是否是最好的方法,但即使 class C 如果它属于同一实例的一部分,也可以获得与 enum 相同的值。这种方法似乎有点模糊,因为它不是很清楚 identifier 是从哪里继承的。还有更好的方法吗?

作为您现在的代码,您可以在任何子类对象上同时调用 getter 和 setter,除了一个细节:Identifier枚举也应该是 public,以便任何客户端 class.

可以访问

Public 和 protected 成员自动被 subclasses 继承。其中,protected 成员只能从 subclasses 访问。 public 成员可从任何客户端访问 class。