我正在尝试找到一种干净且代码高效的方法来在可选的 Guava 中应用转换方法来创建对象,我正在使用 Java 8 和 Guava。
在代码的一个地方,我有一个可选的 created 。
Optional<Object> optional = Optional.of(objFromDatabase)
在另一个领域,我试图用这个可选对象创建一个新对象。我能想到的最好的事情是
if (optional.isPresent()) {
Object obj = optional.get();
NewObject newObj = obj.createNewObj(); //throws IOException, newobj to be returned
} else { throw new IOException() }
但这很麻烦,我希望能学到更多关于可选值和 lambda 表达式的知识。
有什么好的想法吗?
最佳答案
没有人真正给出代码答案,所以这是一个。
首先,创建一个映射对象并处理已检查异常的方法(通过将其包装在未检查异常中)。
private NewObject uncheckedCreateNewObject(Object o) {
try {
return o.createNewObject();
} catch (IOException e) {
throw new UncheckedIOException(e);
}
}
然后,做一个法线贴图:
NewObject newObject = Optional.of(objFromDatabase).toJavaUtil()
.map(this::uncheckedCreateNewObject)
.orElseThrow(IOException::new);
关于java - 如何利用可选的 lambda 表达式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49233142/