Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/clojure/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何解释和使用Java1.8可选类_Java - Fatal编程技术网

如何解释和使用Java1.8可选类

如何解释和使用Java1.8可选类,java,Java,这是另一个StackOverflow问题的代码段: @Override public String convertToDatabaseColumn(final UUID entityValue) { return ofNullable(entityValue).map(entityUuid -> entityUuid.toString()).orElse(null); } 我真的很难理解选修课的用法。返回代码是“返回映射(字符串)的值”还是NULL(如果失败) return如何作

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

@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()
完全有效。不要像这样使用
可选