Nalezl jsem geniální způsob jak obejít škaredé if-else v Javě?

anonym

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:

Kód: [Vybrat]
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:

Kód: [Vybrat]
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.


UF

Re:Nalezl jsem geniální způsob jak obejít škaredé if-else v Javě?
« Odpověď #1 kdy: 13. 08. 2018, 10:27:54 »
?

Lol Phirae

Re:Nalezl jsem geniální způsob jak obejít škaredé if-else v Javě?
« Odpověď #2 kdy: 13. 08. 2018, 10:31:39 »
?

To nic, jen přehřátí z vedra.  ;D