如何在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); });