1

javaで、定義されているクラス外のenumにアクセスするには、直接使用する必要がありますか、それともクラス名を接頭辞として使用する必要がありますか?

4

2 に答える 2

4

それらをインポートすると、それらに直接アクセスできます。それ以外の場合は、囲んでいるクラス名を修飾子として使用する必要があります。

A.java:

class A {
    enum E { . . . }
    . . .
}

B.java (この例では A.java と同じパッケージ):

import A.E;
class B {
    E eThing;     // works because A.E was imported
    A.E eThing2;  // always works provided A is known (in same package here)
    . . .
}

もちろん、この回答は、引き続き適用されるアクセシビリティ ルールの問題には対応していません。(たとえば、private別のクラスから列挙型にアクセスすることはできません。)

B.java が別のパッケージにある場合は、必要ありませimport A;import A.E;。のコードでA(非修飾の) 名前を使用する必要がある場合にのみ、インポートする必要があります。AB

もちろん、 のサブクラスは;のメンバーであるためA、継承します。直接使用するためのインポートは必要ありません(アクセスが許可されている場合)。A.EEAE

于 2013-06-06T02:28:52.913 に答える
2

クラスのように enum だけを宣言する

public enum MyEnum{
    SOMETHING
}

これはアクセスする別のクラスです。

 public class AnotherClass{
        ..
        public void someMethod(){
            Sysout(MyEnum.SOMETHING);
        }
    }

静的インポートを行う場合、enum インスタンスの名前でアクセスできます。

import static MyEnum.SOMETHING

public class MyClass{

public void method(){
 SOMETHING.name();
}
}

ここで、内部クラスのような別の可能性

  public class EnumHolder{
        public enum MyEnum{
            ENUM_INSTANCE
        }  

    }

外部クラスは、classHolder を参照してから列挙型を参照して、ここにアクセスできます。

public class OutsiderClass{

    public void method(){
        Sysout(EnumHolder.MyEnum.ENUM_INSTANCE);
    }

}
于 2013-06-06T02:30:22.923 に答える