Reputation: 14144
In Java it is possible to write code like this:
model.getObservableProduct().observe(this, new Observer<ProductEntity>() {
@Override
public void onChanged(@Nullable ProductEntity productEntity) {
model.setProduct(productEntity);
}
});
However trying to override local function in Kotlin results in:
Question: is it possible to override local function in Kotlin?
Upvotes: 5
Views: 1333
Reputation: 30686
try using object expression instead.
// 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);
}
});
IF the Observer
is a java SAM interface (kotlin SAM interfaces aren't currently supported) then you can using lambda expression instead as further:
model.getObservableProduct().observe(this, Observer<ProductEntity>{
model.setProduct(it);
});
OR using a lambda expression instead, for example:
// specify the lambda parameter type ---v
model.getObservableProduct().observe<ProductEntity>(this) {
model.setProduct(it);
};
Upvotes: 11