java 自我调用,Java lambda表达式如何引用自身?

3.3 Preconditions

Although lambda expressions are intended as a more con-

cise alternative to

AIC

, they are not a complete replacement.

There are several preconditions that

LambdaFicator

checks

before refactoring an

AIC

into a lambda expression. These

preconditions are inherent to how lambda expressions are

implemented in Java, not limitations of our tool.

(P1)

AIC

must instantiate from an interface. Instances of

abstract or concrete classes cannot be converted to lambda

expressions.

(P2)

AIC

must have no fields, and declare only one method.

A lambda expression represents a single anonymous func-

tion; therefore, an

AIC

with multiple methods can not be

converted to a single lambda expression.

(P3)

AIC

must not have references to

this

or

super

. In

a lambda expression,

this

and

super

are lexically scoped,

meaning they are interpreted just as they would be in the

enclosing environment, e.g., as if they appeared in the state-

ment before the lambda expression [6]. However, in an

AIC

they refer to the inner class itself.

(P4)

AIC

must not declare a recursive method. In order to

perform the recursive call, we must obtain a reference to the

anonymous function. While

LambdaFicator

could perform

this refactoring, this could introduce unneeded complexity

into the code and harm understandability.

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值