是否有推荐的惯用方法将 Java 可选值调整为 Kotlin 可空值?

问题描述 投票:0回答:1

我正在编写使用

Optional
s 的 Java 库的 Kotlin 代码,并且我更愿意在 Kotlin 世界中使用 Kotlin 的可空习惯用法。

例如我的图书馆可能有一个功能

Optional<Foo> getFoo(String fooId) {
  ...
}

在我的 Kotlin 程序中我想

foo: Foo? = /* something, something */ getFoo(fooId)

我知道我可以做类似的事情

lateinit var foo: Foo?
val fooOpt = getFoo(fooId)
if(fooOpt.isPresent) foo = fooOpt.get()
else foo = null

但是,鉴于 Java 的

Optional
的用途与可空值几乎相同,这似乎不必要地冗长,即使我将其折叠为

val foo: Foo? = getFoo(fooId).get().orElse(null)
java kotlin option-type nullable
1个回答
0
投票

是的,当使用使用Optional的Java代码并且您想要使其适应Kotlin时,Kotlin中有一些惯用的方法来处理Optional和可为空类型之间的转换。

一种常见的方法是使用Optional上的orElse(null)方法将其转换为Kotlin中的可空类型。这是一个例子:

val optionValue:Optional = // Java 代码中的一些可选值 val nullableValue:字符串? = 可选值.orElse(null)

是的,当使用使用Optional的Java代码并且您想要使其适应Kotlin时,Kotlin中有一些惯用的方法来处理Optional和可为空类型之间的转换。

一种常见的方法是使用Optional上的orElse(null)方法将其转换为Kotlin中的可空类型。这是一个例子:

科特林 复制代码 val optionValue:Optional = // Java 代码中的一些可选值 val nullableValue:字符串? = 可选值.orElse(null) 在这个例子中,如果Optional有一个值,它将被解包;否则,null 将被分配给 nullableValue。这种方法简洁明了。

从 Kotlin 1.3 开始,还可以使用 kotlin-stdlib-jdk8 库提供的 toNullable() 扩展函数将Optional 转换为可空类型:

© www.soinside.com 2019 - 2024. All rights reserved.