您好,我是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) {
}
});
谢谢。
答案 0 :(得分:4)
Retrolambda将Java 8功能扩展到以前的JVM版本。当您使用lambda而不是Runnable
时,它称为自动SAM转换,其中SAM代表单一抽象方法。这意味着如果您有一个接口或具有单个抽象方法的抽象类,则可以使用具有相同签名的lambda替换它。 TextWatcher
有三种抽象方法,你可以看到,它不能用lambda替换。
如果你想使用lambdas,你可以为每个TextWatcher
方法定义单方法接口,并实现接受这些接口的辅助方法,每个方法一个,创建一个TextWatcher
,将调用委托给界面,并将TextWatcher
添加到TextView
。