javaで、定義されているクラス外のenumにアクセスするには、直接使用する必要がありますか、それともクラス名を接頭辞として使用する必要がありますか?
質問する
8341 次
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
(非修飾の) 名前を使用する必要がある場合にのみ、インポートする必要があります。A
B
もちろん、 のサブクラスは;のメンバーであるためA
、継承します。直接使用するためのインポートは必要ありません(アクセスが許可されている場合)。A.E
E
A
E
于 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 に答える