ネストされたJava列挙定義-静的として宣言すると違いが生じますか? [複製]
-
05-07-2019 - |
質問
この質問にはすでに回答があります:
- Javaでは、enum型はクラス内に静的ですか? 2つの答え
インターフェイスがあります-これは例としてうまく工夫されたバージョンです:
public interface Particle {
enum Charge {
POSITIVE, NEGATIVE
}
Charge getCharge();
double getMass();
etc...
}
Charge
列挙型をstaticとして定義した場合、この実装の動作に違いはありますか?
public interface Particle {
static enum Charge {
POSITIVE, NEGATIVE
}
Charge getCharge();
double getMass();
etc...
}
解決
いいえ、違いはありません。しかし、Jonが言うように、それはインターフェイス内のメンバー宣言であるためではありません。本当の理由は、言語仕様( 8.9 )によると
ネストされた列挙型は暗黙的に 静的。許される ネストされた列挙型を明示的に宣言します 静的になります。
次の例では、staticでも違いはありません(インターフェイスがなくても):
public class A {
enum E {A,B};
}
public class A {
static enum E {A,B};
}
ネストされた private 列挙型(暗黙的にパブリックではない)を使用した別の例。
public class A {
private static enum E {A,B}
}
他のヒント
いいえ、違いはありません。 言語仕様、セクション9.5 :
インターフェイスにはメンバータイプを含めることができます 宣言(§ 8.5 )。メンバータイプ インターフェイスでの宣言は 暗黙的に
static
およびpublic
。
所属していません StackOverflow