Can enum instances declare their own public methods?

enums, java

Solution

`MyEnum.SECOND.someOtherMethod()` is illegal because of this rule pertaining to the class bodies on `enum` constants:

Instance methods declared in these class bodies may be invoked outside the enclosing enum type only if they override accessible methods in the enclosing enum type. [JLS §8.9.1]

So since `someOtherMethod()` doesn't override a `MyEnum` method, you can't invoke it outside of `MyEnum`. You could, however, invoke it somewhere in the body of `SECOND`, and you might even be able to invoke it from the body of one of the other `enum` constants like `FIRST`, although I haven't tried it and frankly that would be a bit weird.

Problem

Please consider the following code sample: ``` public enum MyEnum { FIRST { @Override public void someMethod() { ... } }, SECOND { @Override public void someMethod() { ... } public void someOtherMethod() { ... } }; public abstract void someMethod(); } ``` Is it possible to call `someOtherMethod()`? I tried `MyEnum.SECOND.someOtherMethod()` but the IDE could not resolve it. Thanks in advance...

Original source