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

简明Java代码:赋值、空检查和条件执行,java,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) {

下面的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上运行的:

当然,多亏了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);
    }
}

当然,多亏了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);
    }
}

完善其他答案:

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);

这更简短、更简洁。

完善其他答案:

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);
handleA(getObject(id, A.class));
handleB(getObject(id, B.class));
handleC(getObject(id, C.class));

这更简短。

如何利用新的Java8功能

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));
handleA(getObject(id, A.class));
handleB(getObject(id, B.class));
handleC(getObject(id, C.class));

如何利用新的Java8特性

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));

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

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

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

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

打败我!!抱歉,忘了提到我们没有在Java8上工作,请听我说!!抱歉,忘了提及我们没有在Java8上工作yetOooo我更喜欢这个,而不是我的答案。做得好!很抱歉,忘了提到我们没有在Java 8上工作。在Java 8之前,没有很好的方法来处理这个问题,除非利用多态性和继承OOO我更喜欢这个而不是我的答案。做得好!抱歉,忘了提及我们没有在Java 8上工作。在Java 8之前,除非利用多态性和继承,否则没有很好的方法来处理这个问题。抱歉,忘了提及我们没有在Java 8上工作。抱歉,忘了提及我们还没有在Java 8上工作