To je otázka, protože toto je diskuzní forum, ne blog. Nicméně je to oznamovací otázka.
Byl jsem rozhořčen z toho, že musím v Javě psát samé škaredé if-else pro můj HTTP router. Dokonce jsem měl takové myšlenky, že přejdu na Kotlin, který umožňuje toto:
fun cases(obj: Any) {
when (obj) {
1 -> println("One")
"Hello" -> println("Greeting")
is Long -> println("Long")
!is String -> println("Not a string")
else -> println("Unknown")
}
}
Naštěstí jsem ale zůstal při smyslech a nedal se. Bloudil jsem z místa na místo a hledal odpověď na otázku života a smrti. A poté jako blesk z čistého nebe vyšlehl tento geniální nápad:
public class Router {
// @formatter:off
public static boolean route(Request req, Response res) throws Exception {
boolean found =
get ("/hello/world/", Router::sayHello, req, res) ||
post ("/hello/world/", Router::sayHello, req, res) ||
put ("/hello/world/{id}", Router::sayHello, req, res) ||
delete ("/hello/world/{id}", Router::sayHello, req, res) ;
return found;
}
// @formatter:on
}
Vážení, je to tu zas. Java opět ukázala, že nepotřebuje fancy konstrukce. V podstatě tímto jsem docílil toho samého, co umí When v Kotlinovi.