Vous pouvez faire quelque chose comme ceci:
public enum Actions {
COPY( new AbstractAction() {
public void actionPerformed(ActionEvent e) {
//do something
}
}),
PASTE( new PasteAction() );
public final AbstractAction action;
private Actions(AbstractAction action) {
this.action = action;
}
}
//...
Actions.COPY.action...;
Et puis comme d'autres l'ont dit, utiliser le ENUM en liaison avec un EnumSet ou EnumMap. Personnellement, je ne vois pas une grande valeur au-dessus juste avoir quelques champs nommés sans ENUM.
Je pense que ce que vous voulez vraiment est une sorte de registre d'action comme ceci:
public class ActionsManager {
private final Map<String, Action> actions;
private final Map<User, Set<String>> enabledActions;
public Action get(String id);
public void register(String id, Action action);
public void deregister(String id);
public boolean isEnabled(User user, Action action);
}
La mise en œuvre à titre d'exercice.