在 Guide to app architecture谷歌有一个例子,我不明白 -
UserProfileViewModel:
public class UserProfileViewModel extends ViewModel {
private LiveData<User> user;
public LiveData<User> getUser() {
return user;
}
}
UserProfileFragment:
@Override
public void onActivityCreated(@Nullable Bundle savedInstanceState) {
super.onActivityCreated(savedInstanceState);
viewModel.getUser().observe(this, user -> {
// Update UI.
});
}
当我查看LiveData时引用,只有以下observe
方法:
observe(LifecycleOwner owner, Observer<T> observer)
我很困惑,方法签名不匹配:
LifecycleOwner
是支持库 Fragment
,好吧。
但是表达式 user-> { some code }
怎么可能是 Observer对象?
最佳答案
表达式 user-> { some code }
是 SAM(单一抽象方法)类型,更多信息参见 stack overflow post .
简而言之,它只是语法糖:
viewModel.getUser().observe(this, new Observer<User>() {
@Override
public void onChanged(@Nullable User user) {
// Some code
}
});
关于java - 表达式 user-> { some code } 怎么可能是一个 Observer 对象呢?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52916663/