Java Null条件

时间:2009-11-17 18:56:47

标签: java refactoring

我的Java代码中出现了多次以下模式,并且想知道你们中的一些人是如何重构它的。

Object obj1 = buildObj1();
if (obj1 != null) {
    return obj1;
}

Object obj2 = buildObj2();
if (obj2 != null) {
    return obj2;
}

Object obj3 = buildObj3();
if (obj3 != null) {
    return obj3;
}

2 个答案:

答案 0 :(得分:5)

因为Java没有一流的功能,所以你真正做的最好的事情就是拥有一个“构建东西”的界面,然后做这样的事情:

for (Builder<T> builder : builders) {
    T obj = builder.build();
    if (obj != null) return obj;
}

Builder界面就像:

public interface Builder<T> {
    T build();
}
顶部代码段中的

buildersIterable<Builder<T>>

答案 1 :(得分:2)

该代码是否都以相同的方法顺序调用?您可以使用始终返回正确对象的Factory method(obj1,obj2或obj3)。您可以将每个buildObj()方法的“null或real object”条件测试拉入此工厂方法,以便始终从新工厂方法中获取有效对象。


或者,如果您只是意味着在任何地方进行if (obj != null)测试,则可以考虑使用Null对象模式:

  

不使用空引用来传达对象的缺失(例如,不存在的客户),而是使用实现预期接口但其方法体为空的对象。这种方法优于工作默认实现的优点是Null对象是非常可预测的并且没有副作用:它什么都不做。

相关问题