gpt4 book ai didi

java - 带有 TextChangedListener 的 RetroLambda

转载 作者:搜寻专家 更新时间:2023-11-01 07:49:53 25 4
gpt4 key购买 nike

大家好,我是 RetroLambda 的新手。现在我将它与 Runnable、OnClickListener 等一起使用。问题是:是否可以将 RetroLambda 与 onTextChangeListener 等类一起使用?例如如何 lambda this

etmessage.addTextChangedListener(new TextWatcher() {
@Override
public void beforeTextChanged(CharSequence s, int start, int count, int after) {

}

@Override
public void onTextChanged(CharSequence s, int start, int before, int count) {
if (count > 0) {
okmenubutton.setEnabled(true);
okmenubutton.getIcon().setAlpha(255);
} else {
okmenubutton.setEnabled(false);
okmenubutton.getIcon().setAlpha(130);
}
}

@Override
public void afterTextChanged(Editable s) {

}
});

谢谢。

最佳答案

Retrolambda 将 Java 8 功能移植到以前的 JVM 版本。当您使用 lambda 而不是 Runnable 时,它称为自动 SAM 转换,其中 SAM 代表单一抽象方法。这意味着如果你有一个接口(interface)或一个抽象类只有一个抽象方法,你可以用具有相同签名的 lambda 替换它。如您所见,TextWatcher 具有三个抽象方法,并且不能用 lambda 代替。

如果您想使用 lambda,您可以为每个 TextWatcher 方法定义单一方法接口(interface),并实现将接受这些接口(interface)的辅助方法,每个方法一个,创建一个 TextWatcher 将调用委托(delegate)给接口(interface),并将 TextWatcher 添加到 TextView

关于java - 带有 TextChangedListener 的 RetroLambda,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36386197/

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