以下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上运行的:(
答案 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));