vantaggi reali di delegati .Net oltre classi anon di Java?
-
12-09-2019 - |
Domanda
So che molti degli usi di delegati Net può essere emulato in Java utilizzando una combinazione di interfacce e classi anonime, ma ci sono situazioni in cui i delegati hanno un vantaggio reale e non c'è Java equivalente?
Soluzione
- molto sintassi più concisa in C # con le espressioni lambda e metodi anonimi
- L'inferenza di tipo
- Supporto Generale per i delegati in lingua (metodo di gruppo conversioni, ecc)
- delegati multi-cast con il supporto della lingua
- Eventi (semplice sintassi per il pattern Observer sulla base di delegati)
- L'esecuzione asincrona attraverso il sistema di filo-pool
- alberi di espressione con il supporto della lingua
Sì, un sacco di esso possono essere fatto in Java, ma è solo doloroso.
Immaginate query LINQ scrittura ma senza espressioni lambda, metodi di estensione, ecc Sarebbe orribile. Lo stesso vale per un sacco di altri posti dove i delegati sono la soluzione naturale in C # o NET - la soluzione Java idiomatica spesso non utilizzare le classi interne anonime perché sono così dannatamente brutta
Altri suggerimenti
chiusure reali con metodi anonimi in C #
con classi anonime in Java, si deve dichiarare tutte le variabili, si utilizza dal campo di applicazione esterna, come finale