Assmus Menu (⌐■_■)
Erzeugt aus einer Reihe von annotierten Methoden ein Menü für deine CLI-Anwendung.
Erzeugt aus einer Reihe von annotierten Methoden ein Menü für deine CLI-Anwendung. Dazu muss die Klasse AssmusMenu
um eine Kindklasse mit den Methoden der einzelnen Optionen erweitert werden. Die Annotation @MenuOption
definiert den Namen im Menü und welcher String für die Auswahl eingegeben werden muss. Nun kann man in der Einsprungmethode der Java-Anwendung eine Instanz der abgeleiteten Klasse erzeugen und die run-Methode des Objekts aufrufen.
Methoden
Folgende Methoden sind implementiert und können von der Child-Klasse aus aufgerufen werden:
Return type | Passed Object |
---|---|
T | <T> read(Class<?>, String fmt, Object ... args) - Gibt einen formatierten String in der Konsole aus und gibt die Eingabe als Instanz des übergebenen Types zurück. |
T | <T> read(Class<?>) - Gibt die Eingabe als Instanz des übergebenen Types zurück. |
void | printException(Exception e) - Gibt die übergebene Exception und deren Stack Trace in der Konsole aus. |
void | clear() - Entfernt die aktuelle Ausgabe der Konsole. |
Es werden von <T> read(Class<?>, String fmt, Object ... args)
und <T> read(Class<?>)
als Rückgabetyp aktuell unterstützt:
- String
- Short
- Integer
- Long
- Double
- Float
- Byte
- Boolean
- BigInteger
- BigDecimal
Beispiel
class App extends AssmusMenu {
App(String title) {
super(title);
}
@MenuOption(name = "Add", pattern = "a")
public void add() {
clear();
String name = read(String.class, "Name: ");
int age = read(Integer.class, "Age: ");
double height = read(Double.class, "Height in cm: ");
clear();
System.out.println("Name: " + name + ", Age: " + age + ", height: " + height + " cm");
read(String.class);
}
}
Rückgabetypen
Die annotierte Methode muss einen Rückgabetyp von void
oder boolean
haben. Wenn der Typ boolean
ist, wird die Laufvariable der Hauptschleife
auf den invertierten Rückgabewert der Methode gesetzt.
OnUnknownInput
Mit der Annotation @OnUnknownInput
ist es möglich, eine Methode zu definieren, die unerwartete Benutzereingaben handled.
class App extends AssmusMenu {
App(String title) {
super(title);
}
@OnUnknownInput
public void onError() {
clear();
System.out.println("Your input couldn't recognized.");
System.out.println("Hit any key to continue...");
read(String.class);
}
}