.Net代表对Java的匿名类的真正优势是什么?

时间:2009-08-07 19:23:02

标签: java .net delegates anonymous-class

我知道.Net委托的许多用法可以通过使用接口和匿名类的组合在Java中进行模拟,但是在任何情况下委托都有真正的优势并且没有Java等价物吗?

2 个答案:

答案 0 :(得分:9)

  • 使用lambda表达式和匿名方法在C#中使用更简洁的语法
  • 类型推断
  • 语言代表的一般支持(方法组转换等)
  • 具有语言支持的多播代表
  • 事件(基于委托的观察者模式的简单语法)
  • 通过系统线程池异步执行
  • 具有语言支持的表达式树

是的,很多可以在Java中完成,但这很痛苦。

想象一下编写LINQ查询但没有lambda表达式,扩展方法等。这将是可怕的。对于许多其他地方,代理是C#或.NET中的自然解决方案也是如此 - 惯用的Java解决方案通常使用匿名内部类,因为它们非常难看。

答案 1 :(得分:0)

使用c#

中的匿名方法进行真正的闭包

使用java中的匿名类,你必须声明每个变量,你从外部作用域使用,作为最终的