当我在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) {
......
}
}
有没有更好的方法来判断模型是否为空?如果没有,"如果"并且"尝试捕获"哪个更好?
答案 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);
}