现有的内部类有什么问题,为什么内部类不能用于表示闭包?
目前我会在这里发布一些资源以开头。
首先,下面列出了什么是封闭的概述。它与语言无关。我建议阅读它 关闭http://martinfowler.com/bliki/Closure.html
稍后添加
[2007年1月]闭包的定义http://gafter.blogspot.com/2007/01/definition-of-closures.html
END
[2011年12月] Lambda的状态http://cr.openjdk.java.net/~briangoetz/lambda/lambda-state-4.html
[2007年10月]编程语言高级主题:Java闭包http://www.youtube.com/watch?v=0zVizaCOhME
[2011年1月4日] JSR 292善良:使用invokedynamic http://weblogs.java.net/blog/forax/archive/2011/01/04/jsr-292-goodness-lambda-sam-type-conversion-using-invokedynamic进行Lambda到SAM类型转换
答案 0 :(得分:3)
正如我所理解的那样,Java 8中的闭包计划只是为了减少与内部类的当前变通方法相比的痛苦 - 因为严肃地说,内部类的语法是写简单的lambdas会产生巨大的语法开销。
答案 1 :(得分:0)
内部类可用于完成闭包可以为您做的许多事情。
闭包具有两个主要优点,它们更简单,更简洁,意味着它们更有可能被使用。语言可以更好地理解它们,并且可以以内部类不是的方式进行优化。例如更好地处理特定异常,处理原语。
闭包可用于构建其他第一类方法,例如通过currying。我不确定这是否有多大优势,但绝对不是嵌套类的简单选项。