判断模型的更好方法是null?

时间:2017-12-11 01:49:04

标签: android model

当我在Adapter中绑定数据时,我使用Model来执行此操作。

class ModelA{
    ModelB b;
    ......
    geters and setters
}

class ModelB{
    ModelC c;
    ......
    geters and setters
}

class ModelC{
    String name;
    ......
    geters and setters
}

当我想使用名字时,我需要这样做:

bindData(ModelA a) {
    String name = a.getModelB().getModelC().getName();
    mTextView.setText(name);
}

但模型可能为null,所以我添加了这个:

bindData(ModelA a) {
    if(a != null && a.getModelB() != null 
        && a.getModelC() != null 
        &&!TextUtils.isempty(a.getModelB().getModelC().getName())) {
    String name = a.getModelB().getModelC().getName();
    mTextView.setText(name);
    }
}

但是我认为使用try catch可能会更容易,所以我改变了这个:

bindData(ModelA a) {
    try{
        String name = a.getModelB().getModelC().getName();
        mTextView.setText(name);
    }catch (NullPointerException e) {
        ......
    }
}

有没有更好的方法来判断模型是否为空?如果没有,"如果"并且"尝试捕获"哪个更好?

1 个答案:

答案 0 :(得分:1)

在我的情况下,我检查了模型是否提前为空并且我没有检查getter()中的变量。因为如果它为空,我们不需要渲染视图。 (这是我想把Java移到Kotlin的原因之一,因为我不想检查NULL)

initViews() {
    // handle your default data for Views
}

renderViews(ModelA a) {
    ModelB modelB = a.getModelB;
    if (modelB == null {
        return;
    }

    // bind data of ModelB to Views

    ModelC modelC = modelB.getModelC();
    if (modelC == null) {
        return;
    }

    // bind data of ModelC to Views

    String name = modelC.getName();
    mTextView.setText(name);
}