gpt4 book ai didi

java - Lambda 表达式中的这段 Java 代码是什么意思?

转载 作者:行者123 更新时间:2023-12-02 02:48:39 24 4
gpt4 key购买 nike

Handler handler = new Handler(Looper.getMainLooper() );
Runnable workRunnable;
@Override public void afterTextChanged(Editable s) {
handler.removeCallbacks(workRunnable);
workRunnable = () -> search(s.toString());
handler.postDelayed(workRunnable, 500 /*delay*/);
}

这句话是什么意思?

workRunnable = () -> search(s.toString());

普通的Java代码是如何编写的?

最佳答案

这样做:

workRunnable = () -> search(s.toString());

与执行相同:

workRunnable = new Runnable() {
@Override
public void run() {
search(s.toString());
}
};

实际上,低级实现是不同的,lambda 不仅仅是编译器添加的语法糖,即它们不会在内部转换为匿名内部类。然而,当匿名内部类扩展一个函数式接口(interface)(一种只有一个抽象方法的接口(interface))时,从语义的角度来看,两者的含义几乎相同。

一个区别是,在匿名内部类中,如果引用 this,则将引用匿名内部类的实例,而在 lambda 中,如果引用 ,您将引用定义 lambda 的封闭类的实例。

您可能想阅读lesson about lambdas in The Java Tutorial ,其中解释了 lambda 以及如何使用它们。

关于java - Lambda 表达式中的这段 Java 代码是什么意思?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44192682/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com