如何解释和使用Java 1.8 Optional Class

sky*_*man 1 java

这是来自另一个StackOverflow问题的代码段:

@Override
public String convertToDatabaseColumn(final UUID entityValue) {
    return ofNullable(entityValue).map(entityUuid -> entityUuid.toString()).orElse(null);
}
Run Code Online (Sandbox Code Playgroud)

我真的很难理解Optional类的使用.返回代码是"返回映射的值(String),还是NULL,如果失败?

如何返回作用于方法而不是类 - 即Optional.ofNullable()?

Lin*_*ica 8

这是一个非常糟糕的用途Optional.实际上java开发人员自己说在这种情况下不应该使用可选项,而只是作为方法的返回参数.在这个伟大的答案中可以阅读更多内容:在类中使用optional作为属性是一种好习惯

代码可以重写为:

@Override
public String convertToDatabaseColumn(final UUID entityValue) {
    return entityValue == null ? null : entityValue.toString();
}
Run Code Online (Sandbox Code Playgroud)