对可选 Java 8 执行无效操作



我有一些处理逻辑:

public void handle(String uniqueId) {
Optional<Config> config = configDAO.find(uniqueId);
if (!config.isPresent()) {
LOGGER.warn("config not found for uniqueId '{}'", uniqueId);
} else {
internalHandle(config.get());
}
}

换句话说,我想根据 Optional 值的存在运行两个 void 操作之一。

我非常担心在我的代码中不使用isPresent,但看起来 java8 没有提供任何我可以替换此代码的内容。

正如在java9的注释中提到的,您可以使用ifPresentOrElse

config.ifPresentOrElse(c -> internalHandle(c), 
() -> LOGGER.warn("config not found for uniqueId '{}'", uniqueId));

使用if else语句实现ifPresentOrElse如果非常简单的话。从源代码:

public void ifPresentOrElse(Consumer<? super T> action, Runnable emptyAction) {
if (value != null) {
action.accept(value);
} else {
emptyAction.run();
}
}

所以我想在java 8的情况下使用if else逻辑是合适的,就像在你的例子中一样。

最新更新