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;
}
}