简化java if语句

时间:2011-08-03 13:22:30

标签: java if-statement verbosity

我可以简化这个java if构造吗?对我来说这似乎太冗长了,我想让它更短。

A是持久性Object,如果第一次访问它的上下文,它将为null。比A安装并给定内容,如果失败,则会向A提供一些备份内容。

if (A == null) {
    A = staticGetMethod();
    if (A == null) A = new BackupAContent() { ... };
}

5 个答案:

答案 0 :(得分:5)

更新:或者你可以简单地删除嵌套,因为它仍然会以相同的方式运行。

if (A == null) {
    A = staticGetMethod();
}
if (A == null) {
    new BackupAContent() { ... };
}

应该工作:

if (A == null && (A = staticGetMethod()) == null) {
    new BackupAContent() { ... };
}

答案 1 :(得分:3)

将您的构建逻辑放在工厂方法

if (objA == null) {
    objA = getAInstance();

}

将Charles建议的代码封装到实现Factory_method_pattern

的方法中

答案 2 :(得分:0)

您可以使用三元运算符代替if语句:

a = a ? a : staticGetMethod();
a = a ? a : new BackupAContent();

那就是说,我坚持你所拥有的,说实话 - 除了我会为第二个条件添加一个块而不是将该语句与其内联。

答案 3 :(得分:0)

这是查尔斯古德温的代码略有变化:

if (A == null && (A = staticGetMethod()) == null) {
new BackupAContent() { ... };
}

我使用的是AND而不是OR

答案 4 :(得分:0)

我认为这是最好的方法:

if(A == null)
{
    if((A = staticGetMethod()) == null) A = new BackupAContent() { ... };
}