如何在Kotlin中实现一个java SAM接口?
在Java中,可以像这样编写代码:
model.getObservableProduct().observe(this, new Observer() { @Override public void onChanged(@Nullable ProductEntity productEntity) { model.setProduct(productEntity); } });
然而,试图在Kotlin中覆盖本地函数的结果是:
问题:可以重写Kotlin中的本地函数吗?
尝试使用对象expression式。
// the parentheses must be removed if Observer is an interface ---V model.getObservableProduct().observe(this, object:Observer(){ override fun onChanged(productEntity:ProductEntity?) { model.setProduct(productEntity); } });
如果 Observer
是一个java SAM接口( kotlin SAM接口现在不支持 ),那么你可以使用lambdaexpression式来代替:
model.getObservableProduct().observe(this, Observer{ model.setProduct(it); });
或者使用lambdaexpression式代替,例如:
// specify the lambda parameter type ---v model.getObservableProduct().observe(this){ model.setProduct(it); });
- Kotlin:找不到符号类的片段或其他Android类
- 在android中使用kotlin从BroadcastReceiver类访问edittext的Activity
- 哪里可以节省Android的GPS(经度,纬度)点?
- 如何将imageview转换为kotlin中的bytearray
- 如何在Kotlin中手动解析JSON?
- 如何将RealmResults <Object>转换为List <Object>
- 房间不能选择一个构造函数,因为多个构造函数是合适的错误
- kodein – 注入的数据值不是数据的值检索
- Kotlin || RecycleView项目不会膨胀:RecycleView.Adapter的每个重写方法上的无法访问的代码