如何在Kotlin中实现一个java SAM接口?

在Java中,可以像这样编写代码:

model.getObservableProduct().observe(this, new Observer<ProductEntity>() { @Override public void onChanged(@Nullable ProductEntity productEntity) { model.setProduct(productEntity); } }); 

然而,试图在Kotlin中覆盖本地函数的结果是: 在这里输入图像描述


问题:可以重写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); } }); 

如果 Observer是一个java SAM接口( kotlin SAM接口现在不支持 ),那么你可以使用lambda表达式来代替:

 model.getObservableProduct().observe(this, Observer<ProductEntity>{ model.setProduct(it); }); 

或者使用lambda表达式代替,例如:

 // specify the lambda parameter type ---v model.getObservableProduct().observe<ProductEntity>(this){ model.setProduct(it); }); 
Interesting Posts