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?

È stato utile?

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

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top