.Net 委托相对于 Java 匿名类的真正优势是什么?
我知道 .Net 委托的很多用途可以通过使用接口和匿名类的组合在 Java 中进行模拟,但是在某些情况下委托具有真正的优势并且没有 Java 等效项吗?
I know a lot of the uses of .Net delegates can be emulated in Java by using a combination of interfaces and anonymous classes, but are there any situations where delegates have a real advantage and there is no Java equivalent?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
是的,很多可以在Java中完成,但这只是痛苦。
想象一下编写 LINQ 查询但没有 lambda 表达式、扩展方法等。这将是可怕的。 这同样适用于许多其他地方,其中委托是 C# 或 .NET 中的自然解决方案 - 惯用的 Java 解决方案通常不使用匿名内部类,因为它们实在是太丑陋了。
Yes, a lot of it can be done in Java, but it's just painful.
Imagine writing LINQ queries but without lambda expressions, extension methods etc. It would be hideous. The same goes for a lot of other places where delegates are the natural solution in C# or .NET - the idiomatic Java solution often doesn't use anonymous inner classes because they're so darned ugly.
真正的闭包,在c#中使用匿名方法,
在java中使用匿名类,你必须声明从外部作用域使用的每个变量,作为final
real closures with anonymous methods in c#
with anonymous classes in java, you have to declare every variable, you use from the outer scope, as final