简明Java代码:赋值,空检查和条件执行

时间:2016-12-21 22:00:07

标签: java

以下Java代码似乎相当冗长且有些重复。可以更简洁吗?

A myObjA = getObject(id, A.class);

if (myObjA != null) {
  handleA(myObjA);
}

B myObjB = getObject(id, B.class);

if (myObjB != null) {
  handleB(myObjB);
}

C myObjC = getObject(id, C.class);

if (myObjC != null) {
  handleC(myObjC);
}

忘了提。这不是在Java 8上运行的:(

4 个答案:

答案 0 :(得分:3)

当然,感谢java-8的神奇!只需创建这个辅助方法:

private <T> static void getAndHandleIfNonNull(int id, Class<T> clazz, Consumer<T> handler) {
    T t = getObject(id, clazz);
    if (t != null) {
        handler.accept(t);
    }
}

然后叫它:

getAndHandleIfNonNull(id, A.class, this::handleA);
getAndHandleIfNonNull(id, B.class, this::handleB);
getAndHandleIfNonNull(id, C.class, this::handleC);

答案 1 :(得分:2)

完善其他答案:

Optional.ofNullable(getObject(id, A.class)).ifPresent(this::handleA);
Optional.ofNullable(getObject(id, B.class)).ifPresent(this::handleB);
Optional.ofNullable(getObject(id, C.class)).ifPresent(this::handleC);

这更短更简洁。

答案 2 :(得分:1)

如何使用新的Java 8功能?

Optional.ofNullable(getObject(id,A.class)).ifPresent(myObjA -> handleA(myObjA));
Optional.ofNullable(getObject(id,B.class)).ifPresent(myObjB -> handleB(myObjB));
Optional.ofNullable(getObject(id,C.class)).ifPresent(myObjC -> handleC(myObjC));

答案 3 :(得分:0)

好吧,如果你可以在handleX方法中放置一个空检查栏,你的代码就会变得更加简洁。

handleA(getObject(id, A.class));
handleB(getObject(id, B.class));
handleC(getObject(id, C.class));