I've found Enums defined like the following:
public Enum MyEnum {
   ONE
   {
      @Override
      public int getSomething() {
         return 1;
      } 
   },
   TWO
   {
      @Override
      public int getSomething() {
        return 2;
      }
   }
   int getSomething()
   {
      return 0;
   }
}
Somehow I feel some type of discomfort with this implementation because I would think that ideally a field should be defined for this purpose and the class should look something like:
public Enum MyEnum{
   ONE(1),
   TWO(2)
   private int theSomething;
   private MyEnum(int something) {
      theSomething = something;
   }
   int getSomething()
   {
      return theSomething;
   }
}
The problem is that apart from personal discomfort I cannot find any good reason to change this code. Do any exists?
(moved from comment)
Your first example is used commonly to implement a finite state machine in Java. It eliminates the need for every method having to have a if (state == FOO) {} else if (state == BAR) etc
class MyFSM {
    enum State {
        FIRST_STATE {
            @Override
            void start(MyFSM fsm) {
                fsm.doStart();
            }
            @Override
            void stop(MyFSM fsm) {
                throw new IllegalStateException("Not Started!");
            }
        },
        SECOND_STATE {
            @Override
            void start(MyFSM fsm) {
                throw new IllegalStateException("Already Started!");
            }
            @Override
            void stop(MyFSM fsm) {
                fsm.doStop();
            }
        };
        abstract void start(MyFSM fsm);
        abstract void stop(MyFSM fsm);       
    }
    private volatile State state = State.FIRST_STATE;
    public synchronized void start() {
        state.start(this);
    }
    private void doStart() {
        state = SECOND_STATE;
    }
    public synchronized void stop() {
        state.stop(this);
    }
    private void doStop() {
        state = FIRST_STATE;
    }
}
                        The first pattern is slightly better for "default" methods that don't all need to be overridden.
public enum Modes {
    MODE_ONE {
        @Override public boolean canDoA() {
            return true;
        }
    },
    MODE_TWO {
        @Override public boolean canDoB() {
            return true;
        }
    },
    MODE_THREE {
        @Override public boolean canDoC() {
            return true;
        }
    };
    public boolean canDoA() {
        return false;
    }
    public boolean canDoB() {
        return false;
    }
    public boolean canDoC() {
        return false;
    }
}
                        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