gpt4 book ai didi

java - eclipse 自动生成 !=null 递归调用

转载 作者:行者123 更新时间:2023-11-30 11:30:07 30 4
gpt4 key购买 nike

给定一个 java 代码,例如:

Something v = a.getB().getC().getD().getE();

Eclipse(模板或外部插件)中是否有生成安全链调用的方法:

if(a!=null && 
a.getB()!=null &&
a.getB().getC()!=null &&
a.getB().getC().getD()!=null &&
a.getB().getC().getD().getE()!=null){
Something v = a.getB().getC().getD().getE();
}

最佳答案

您是否考虑过 try{} catch(NullPointerException e){} block ?它可能感觉不那么优雅,但如果任何方法调用失败,它会停止你的代码,因为前一个方法返回 null,如果它是 null,它会让你有机会给出默认值。

另一种选择是这样的:

Something v = /*Default Value*/ // Will be overwritten if subsequent methods succeed.
Object temp = a.getB(); // Use whatever Object type getB() returns.
if(temp != null){
temp = temp.getC();
/* If getC() returns a different type of object,
* either use a different variable or make the temp variable even broader
* (such as the generic Object type) */
if(temp != null){
temp = temp.getD();
if(temp != null){
temp = temp.getE();
if(temp != null)
v = temp;
/* If all previous calls returned something substantial,
* v will be something useful */
}//if(getE() != null)
}//if(getD() != null)
}//if(getC() != null)
}//if(getB() != null)

如果需要,您可以通过不嵌套 if 语句来使用 CPU 效率稍低但更易于阅读的版本。如果所有 if 语句都在彼此之后执行,单个 null 将阻止所有下一个语句的执行,尽管它的值仍然会每次都被检查。

至于生成这些语句,我不太确定。这实际上取决于您可以提前多长时间预测从以前的方法调用返回的 Object 中可以使用哪些新方法。如果您的目标是自动生成代码,我的第一个建议可能会更好:try-catch

关于java - eclipse 自动生成 !=null 递归调用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17967494/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com