私はインターフェースを持っています-ここに例としてうまく作られたバージョンがあります:
public interface Particle {
enum Charge {
POSITIVE, NEGATIVE
}
Charge getCharge();
double getMass();
etc...
}
Charge
列挙型を静的として定義した場合、これの実装がどのように動作するかに違いはありますか?つまり、これは効果がありますか?
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 enumを使用した別の例(暗黙的にパブリックではない)。
public class A {
private static enum E {A,B}
}
いいえ、違いはありません。 言語仕様、セクション9.5 から:
インターフェイスには、メンバー型宣言( §8.5 )を含めることができます。インターフェースのメンバー型宣言は、暗黙的に
static
およびpublic
です。