我可以简化这个 java if 构造吗?对我来说似乎太冗长了,我希望它更短。
A 是持久对象,如果第一次访问它的上下文,它将为空。然后 A 被实例化并提供内容,如果失败,则将一些备份内容提供给 A。
if (A == null) {
A = staticGetMethod();
if (A == null) A = new BackupAContent() { ... };
}
我可以简化这个 java if 构造吗?对我来说似乎太冗长了,我希望它更短。
A 是持久对象,如果第一次访问它的上下文,它将为空。然后 A 被实例化并提供内容,如果失败,则将一些备份内容提供给 A。
if (A == null) {
A = staticGetMethod();
if (A == null) A = new BackupAContent() { ... };
}
更新:或者您可以简单地删除嵌套,因为它的行为仍然相同。
if (A == null) {
A = staticGetMethod();
}
if (A == null) {
new BackupAContent() { ... };
}
应该管用:
if (A == null && (A = staticGetMethod()) == null) {
new BackupAContent() { ... };
}
将您的构建逻辑放入工厂方法中
if (objA == null) {
objA = getAInstance();
}
将Charles建议的代码封装成方法实现Factory_method_pattern
您可以使用三元运算符而不是if
语句:
a = a ? a : staticGetMethod();
a = a ? a : new BackupAContent();
也就是说,老实说,我会坚持你所拥有的——除了我会为第二个条件添加一个块,而不是将语句与它内联。
这是查尔斯古德温的代码,略有改动:
if (A == null && (A = staticGetMethod()) == null) {
new BackupAContent() { ... };
}
我使用 AND 而不是 OR
我认为这是最好的方法:
if(A == null)
{
if((A = staticGetMethod()) == null) A = new BackupAContent() { ... };
}