我有一个界面 - 这是一个很好的人为例子:
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...
}
答案 0 :(得分:85)
不,没有区别。然而,原因不是因为它是界面内的成员声明,正如乔恩所说。真正的原因是根据语言规范( 8.9 )
嵌套枚举类型是隐式的 静态的。这是允许的 显式声明嵌套的枚举类型 是静止的。
在下面的示例中,static也没有任何区别(即使我们没有接口):
public class A {
enum E {A,B};
}
public class A {
static enum E {A,B};
}
另一个嵌套私有枚举的示例(非隐式公开)。
public class A {
private static enum E {A,B}
}
答案 1 :(得分:30)
不,没有区别。来自language spec, section 9.5:
接口可能包含成员类型 声明(§8.5)。会员类型 接口中的声明是 隐含
static
和public
。