有时我面对我必须写一段这样的代码(通常它有更多的嵌套if和更复杂的结构,但是对于这个例子来说)
public void printIt(Object1 a){
if (a!=null){
SubObject b= a.getB();
if (b!=null){
SubObject2 c=b.getC();
if(c!=null){
c.print();
}
}
}
}
Run Code Online (Sandbox Code Playgroud)
当我不需要知道什么是失败的,如果什么是空的什么都不做,一种方法可能是
public void printIt(Object1 a){
try{
a.getB().getC().print();
}catch (NullPointerException e) {
}
}
Run Code Online (Sandbox Code Playgroud)
第二种形式如性能或其他类型的问题是否有问题?
谢谢
在这里,我的主要目标是安全地设置值,而不会产生性能(速度,内存,CPU等)影响.
我有一个愚蠢的选择(坏的风格)也在下面提到.那么,最好的方法是什么?选项1?选项2?还是另一个?
选项1 :
if(
animalData!=null &&
animalData.getBreedData()!=null &&
dogx.getBreed() != null && dogx.getBreed().getBreedCode() != null &&
animalData.getBreedData().get(dogx.getBreed().getBreedCode()) != null
){
dogx.getBreed().setBreedId(animalData.getBreedData().get(dogx.getBreed().getBreedCode()));
}
Run Code Online (Sandbox Code Playgroud)
选项2:
try{dogx.getBreed().setBreedId(animalData.getBreedData().get(dogx.getBreed().getBreedCode()));}catch(Exception e){}
Run Code Online (Sandbox Code Playgroud)
注意:这段代码是一个循环,有数千次迭代.