Java Null条件

All*_*nde 2 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;
}
Run Code Online (Sandbox Code Playgroud)

Lau*_*ves 5

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

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

Builder界面就像这样:

public interface Builder<T> {
    T build();
}
Run Code Online (Sandbox Code Playgroud)

builders在顶部片段是一个Iterable<Builder<T>>.