有一个演示者,在它的各种方法中都有对方法的调用,该方法getView()位于基本演示者中。
protected V getView() {
return view;
}
如果view == null方便我不执行该方法并且什么都不做。在我的单屏应用的情况下,这是理想的。try/if 但我不想写一堆 blocks 。我想在尝试使用view一次之前检查并停止进一步的代码执行。
如果我在方法中以某种方式处理这种情况,getView()我仍然必须执行return view;
UPD,我看到我的问题并不清楚。这是详细信息。
public class BasePresenter<V extends BaseView> implements MvpPresenter<V> {
private V view;
@Override
public void attachView(V view) {
this.view = view;
}
@Override
public void detachView() {
view = null;
}
protected V getView() {
return view;
}
}
好吧,主持人本人:
public class MainMenuPresenter<V extends MainView> extends BasePresenter<V>
implements MainPresenter<V> {
public void setData(PostModel postModel) {
....
getView().refreshSpinner();
....
getView().refreshAdapterModelDate();
}
private void validationOfData(PostModel postModel) {
if (postModel.getDate() == null) {
getView().refreshAdapterModelDate();
getView().showToast("В");
} else if (!postModel.getDate().equals(currentDate)) {
getView().refreshAdapterModelDate();
getView().showToast("");
} else {
//Если всё в порядке
setData(postModel);
dataManager.setDataBase(postModel);
}
}
}
如果您根本不想检查,则有null object之类的东西。它的含义是,字段不是null,而是与一个特殊的静态对象或单例网络(为了经济),它实现与字段相同的接口并返回(如果需要)一个默认值。在您的情况下,它将类似于
使用这样的对象将有助于摆脱不必要的检查,而 NPE 永远不会发生