Pergunta

Eu sei que muitos dos usos de delegados Net pode ser emulada em Java usando uma combinação de interfaces e classes anônimas, mas existem situações em que os delegados têm uma vantagem real e não existe equivalente Java?

Foi útil?

Solução

  • Muito mais sintaxe concisa em C # com expressões lambda e métodos anônimos
  • Tipo de inferência
  • Suporte Geral para os delegados na língua (conversões grupo de método etc)
  • delegados Multi-elenco com suporte ao idioma
  • Eventos (sintaxe simples para o padrão observador baseado em delegados)
  • A execução assíncrona através do sistema de thread-piscina
  • Árvores de expressão com o suporte ao idioma

Sim, um monte de que pode ser feito em Java, mas é apenas doloroso.

Imagine escrever consultas LINQ, mas sem as expressões lambda, métodos de extensão etc. Seria hediondo. O mesmo vale para um monte de outros lugares onde os delegados são a solução natural em C # ou .NET - a solução Java idiomática muitas vezes não usar classes internas anônimas, porque eles são tão enervante feio

Outras dicas

fechamentos reais com métodos anônimos no c #

com classes anônimas em Java, você tem que declarar todas as variáveis, você pode usar a partir do escopo externo, como final

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top