Sie können etwas tun:
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...;
Und dann wie andere gesagt haben, verwenden Sie die Enum in Verbindung mit einem EnumSet oder EnumMap. Ich persönlich sehe keinen großen Wert in der es über nur ein paar Namen Felder, ohne Enum.
Ich denke, was Sie wirklich wollen, ist eine Art von Action-Registry wie folgt:
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);
}
Die Umsetzung links als Übung.