I have an interface - here's a nicely contrived version as an example:
public interface Particle { enum Charge { POSITIVE, NEGATIVE } Charge getCharge(); double getMass(); etc... }
Is there any difference in how implementations of this would behave if I defined the Charge
enum as static - i.e. does this have any effect:
public interface Particle { static enum Charge { POSITIVE, NEGATIVE } Charge getCharge(); double getMass(); etc... }
No, it makes no difference. However the reason is not because it is a member declaration inside an interface, as Jon says. The real reason is according to language spec (8.9) that
Nested enum types are implicitly static. It is permissable to explicitly declare a nested enum type to be static.
At the following example static does not make any difference either (even though we have no interface):
public class A { enum E {A,B}; } public class A { static enum E {A,B}; }
Another example with a nested private enum (not implicitly public).
public class A { private static enum E {A,B} }
No, it makes no difference. From the language spec, section 9.5:
Interfaces may contain member type declarations (§8.5). A member type declaration in an interface is implicitly
static
andpublic
.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With