Hallo
Ich verwende folgendes Enum für die Steuerung eines Formulars über ein anderes:
Es fällt sicher sofort auf, dass Navigation und Modifikation so in einem Satz gespeichert sind.
Für die Navigation hab ich einen eigenen Handler, der sollte jetzt natürlich auch nur Navigationskommandos akzeptieren.
IN der Methode ist das kein Problem.
Was ich nun erreichen möchte, ist, dass schon der Compiler meckert, wenn z.b. das CreateNew-Kommando (hardcodiert, also nicht über eine Variable, dann kann man eh nichts machen) an den Handler für die Navigation weitergereicht wird.
Meine erste Idee war, ein Enum für die Navigation zu erstellen und das Command-Enum darauf aufzubauen. Das ging klarerweise nicht.
Mein nächster Ansatz wäre dann, es über Generics zu lösen, also so etwas in dieser Richtung (das klappt so natürlich nicht)
Habe ich hier eine Chance?
Oder gibt es eine andere Lösung, auf die schon der Compiler anspringt?
Ich verwende folgendes Enum für die Steuerung eines Formulars über ein anderes:
Java:
enum Command {
GotoFirst,
GotoPrevious,
GotoNext,
GotoLast,
CreateNew,
CreateClone,
DeleteCurrent,
Reload
}
Es fällt sicher sofort auf, dass Navigation und Modifikation so in einem Satz gespeichert sind.
Für die Navigation hab ich einen eigenen Handler, der sollte jetzt natürlich auch nur Navigationskommandos akzeptieren.
IN der Methode ist das kein Problem.
Was ich nun erreichen möchte, ist, dass schon der Compiler meckert, wenn z.b. das CreateNew-Kommando (hardcodiert, also nicht über eine Variable, dann kann man eh nichts machen) an den Handler für die Navigation weitergereicht wird.
Meine erste Idee war, ein Enum für die Navigation zu erstellen und das Command-Enum darauf aufzubauen. Das ging klarerweise nicht.
Mein nächster Ansatz wäre dann, es über Generics zu lösen, also so etwas in dieser Richtung (das klappt so natürlich nicht)
Java:
public <T isoneof {Command.GotoFirst, Command.GotoNext, Command.GotoPrevious, Command.GotoLast} handleNavigation(T direction) {...}
Oder gibt es eine andere Lösung, auf die schon der Compiler anspringt?