简明Java代码:赋值、空检查和条件执行
下面的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) {
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上工作