如何解释和使用Java1.8可选类
这是另一个StackOverflow问题的代码段:如何解释和使用Java1.8可选类,java,Java,这是另一个StackOverflow问题的代码段: @Override public String convertToDatabaseColumn(final UUID entityValue) { return ofNullable(entityValue).map(entityUuid -> entityUuid.toString()).orElse(null); } 我真的很难理解选修课的用法。返回代码是“返回映射(字符串)的值”还是NULL(如果失败) return如何作
@Override
public String convertToDatabaseColumn(final UUID entityValue) {
return ofNullable(entityValue).map(entityUuid -> entityUuid.toString()).orElse(null);
}
我真的很难理解选修课的用法。返回代码是“返回映射(字符串)的值”还是NULL(如果失败)
return如何作用于方法而不是类?这是可选的。ofNullable()?这是
Optional
的一个非常糟糕的用法。事实上,是,但仅作为方法的返回参数。在这个伟大的答案中可以阅读更多内容:
代码可以改写为:
@Override
public String convertToDatabaseColumn(final UUID entityValue) {
return entityValue == null ? null : entityValue.toString();
}
这是
Optional
的一个非常糟糕的用法。事实上,是,但仅作为方法的返回参数。在这个伟大的答案中可以阅读更多内容:
代码可以改写为:
@Override
public String convertToDatabaseColumn(final UUID entityValue) {
return entityValue == null ? null : entityValue.toString();
}
返回代码是“返回映射(字符串)的值”还是NULL(如果失败)
对。您可以查看可选的文档。它准确地告诉您map
和orElse
做什么
return如何作用于方法而不是类-这是可选的
您没有返回该方法。您正在返回方法的返回值。看看这个简单的例子:
int myMethod() {
return foo();
}
int foo() { return 10; }
看到了吗?我没有返回foo
方法,而是返回10
,foo
的返回值
请注意,可以使用函数接口返回方法
在这种情况下,您将返回方法链中最后一个方法的返回值,orElse
创建一个Optional
,然后在此对象上调用映射
,并返回一个新的Optional
,然后调用或ELSE
,并返回其返回值
返回代码是“返回映射(字符串)的值”还是NULL(如果失败)
是的。您可以查看Optional
的文档。它准确地告诉您映射
和orElse
做什么
return如何作用于方法而不是类-这是可选的
您没有返回方法。您返回的是方法的返回值。请看以下简单示例:
int myMethod() {
return foo();
}
int foo() { return 10; }
看到了吗?我没有返回foo
方法,而是返回10
,foo
的返回值
请注意,可以使用函数接口返回方法
在这种情况下,您将返回方法链中最后一个方法的返回值,orElse
的nullable
创建一个Optional
,然后在此对象上调用map
,并返回一个新的Optional
,然后调用orElse
并返回其返回值。让我们一步一步来步骤:
ofNullable(entityValue)
创建传入参数的可选值(允许为null,使用()的of
NPE为null输入抛出)
然后选择实际值,并对该值调用toString()
,这仅在entityValue
不为null时发生。如果为null,则结果来自orElse(null)
最后,对可选对象执行该操作的结果将作为方法的结果返回
上面的代码只是一个美化版本的
if (entityValue == null) return null;
return entityValue.toString();
Optionals在Java中占有一席之地,但您的示例并不好
它对可读性没有任何帮助,你也不是唯一一个想知道“这里发生了什么事”的人
ofNullable(entityValue)
创建传入参数的可选值(允许为null,使用()的of
NPE为null输入抛出)
然后选择实际值,并对该值调用toString()
,这仅在entityValue
不为null时发生。如果为null,则结果来自orElse(null)
最后,对可选对象执行该操作的结果将作为方法的结果返回
上面的代码只是一个美化版本的
if (entityValue == null) return null;
return entityValue.toString();
Optionals在Java中占有一席之地,但您的示例并不好
它对可读性一点帮助都没有,你也不是唯一一个想知道“这里发生了什么”的人。可选。不可用(t值):
返回描述指定值的可选值,如果为非null,则返回空可选值
可选。orElse(空)
如果存在,则返回值,否则返回null
遵循可选的。空值(T值):
返回描述指定值的可选值,如果为非null,则返回空可选值
可选。orElse(空)
如果存在,则返回值,否则返回null
按照以下步骤操作代码可以按如下方式转动:
public String convertToDatabaseColumn(final UUID entityValue) {
if(entityValue==null){
return null;
}else{
return entityValue.toString();
}
}
您的初始代码有两条语句:
可选。ofNullable(entityValue):创建一个可选对象,表示该值是否可以存在。
.map(entityUuid->entityUuid.toString()).orElse(null);对可选对象应用某些操作,返回字符串或null
这将以一种更优雅的方式避免空指针异常。代码可以这样转换:
public String convertToDatabaseColumn(final UUID entityValue) {
if(entityValue==null){
return null;
}else{
return entityValue.toString();
}
}
您的初始代码有两条语句:
可选。ofNullable(entityValue):创建一个可选对象,表示该值是否可以存在。
.map(entityUuid->entityUuid.toString()).orElse(null);对可选对象应用某些操作,返回字符串或null
这将以更优雅的方式避免空指针异常。“return如何作用于方法而不是类”
return不作用于“方法”或“类”—它作用于表达式。return getStuff()
如果getStuff()完全有效
本身返回一个合适的值。返回calculateStuff(10)。如果方法返回一个字符串
,则toString()
完全有效。不要像这样使用可选