0le*_*leg 2 android functional-programming kotlin functional-interface
在Java中,可以编写如下代码:
model.getObservableProduct().observe(this, new Observer<ProductEntity>() {
@Override
public void onChanged(@Nullable ProductEntity productEntity) {
model.setProduct(productEntity);
}
});
Run Code Online (Sandbox Code Playgroud)
问题:是否可以覆盖Kotlin中的本地功能?
尝试使用对象表达式.
// the parentheses must be removed if Observer is an interface ---V
model.getObservableProduct().observe(this, object:Observer<ProductEntity>(){
override fun onChanged(productEntity:ProductEntity?) {
model.setProduct(productEntity);
}
});
Run Code Online (Sandbox Code Playgroud)
IF的Observer是一个java SAM接口(科特林SAM接口当前不支持的),则可以使用lambda表达式代替作为进一步:
model.getObservableProduct().observe(this, Observer<ProductEntity>{
model.setProduct(it);
});
Run Code Online (Sandbox Code Playgroud)
或者使用lambda表达式,例如:
// specify the lambda parameter type ---v
model.getObservableProduct().observe<ProductEntity>(this) {
model.setProduct(it);
};
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
518 次 |
| 最近记录: |