匿名内部类(AIC)可用于创建抽象类或具体类的子类。AIC还可以提供接口的具体实现,包括添加状态(字段)。可以在AIC this的方法主体中使用AIC的实例,因此可以在其上调用其他方法,其状态可以随时间变化,等等。这些都不适用于lambda。
我猜想AIC的大多数用途是提供单个功能的无状态实现,因此可以用lambda表达式代替,但是AIC的其他用途不能使用lambda。AIC在这里停留。
更新
AIC和lambda表达式之间的另一个区别是AIC引入了新的范围。也就是说,名称是通过AIC的超类和接口解析的,并且可以遮盖出现在词法包围环境中的名称。对于lambda,所有名称都按词法解析。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)