java中可以使用 default 关键字添加默认实现 以实现类中可以有选择性的重写接口方法
如下所示
public interface TextWatcherAdapter extends TextWatcher {
@Override
default void beforeTextChanged(CharSequence s, int start, int count, int after) {
}
@Override
default void onTextChanged(CharSequence s, int start, int before, int count) {
}
@Override
default void afterTextChanged(Editable s) {
}
}
实现接口的时候可以只重写其中的某个方法
public class Test implements TextWatcherAdapter{
@Override
public void afterTextChanged(Editable s) {
}
}
但是转换成kotlin后
interface TextWatcherAdapter : TextWatcher {
override fun beforeTextChanged(s: CharSequence, start: Int, count: Int, after: Int) {}
override fun onTextChanged(s: CharSequence, start: Int, before: Int, count: Int) {}
override fun afterTextChanged(s: Editable) {}
}
搜索了一下发现可以在方法上添加 @JvmDefault 注解 以实现java 代码中的效果
可以看到 报错提示 需要在 build.gradle 中添加 kotlinOptions 而且 @JvmDefault 已经被弃用
所以直接在 build.gradle 中添加 kotlinOptions
kotlinOptions {
jvmTarget = '11'//这里的java版本根据自己项目中的版本来
freeCompilerArgs += [
'-Xjvm-default', 'all'
]
}
就可以实现java中default关键字的效果了 @JvmDefault 注解也不需要加