如何在应用方法(Java 到 Kotlin 代码转换)时将 List 映射到 Set?
How to map a List to a Set while applying a method(Java to Kotlin code conversion)?
我在 Java 中有这个代码片段(这是一个 MCVE;实际代码更复杂但有完全相同的问题):
enum StatusEnum { A, B, C; }
[...]
final static Set<String> names = Arrays.asList(StatusEnum.values())
.stream().map(StatusEnum::name).collect(Collectors.toSet());
IntelliJ 为我提供了以下到 Kotlin 的自动转换:
internal val names = Arrays.asList(*StatusEnum.values())
.stream().map<String>(Function<StatusEnum, String> { it.name })
.collect<Set<String>, Any>(Collectors.toSet())
不幸的是,这有编译错误:
- 接口函数没有构造函数
- 类型推断失败。预期类型不匹配:推断类型为 Collector!>!但是收藏家!>!预计
- 未解决的参考:它
这是我第一次尝试将一些代码转换为 Kotlin。我已经查看了 Functions and Lambdas section of the documentation。仍然不清楚这里发生了什么或如何解决它。
使用 Kotlin 方法代替 Java 流:
val names = StatusEnum.values()
.map { it.name }
.toSet()
我在 Java 中有这个代码片段(这是一个 MCVE;实际代码更复杂但有完全相同的问题):
enum StatusEnum { A, B, C; }
[...]
final static Set<String> names = Arrays.asList(StatusEnum.values())
.stream().map(StatusEnum::name).collect(Collectors.toSet());
IntelliJ 为我提供了以下到 Kotlin 的自动转换:
internal val names = Arrays.asList(*StatusEnum.values())
.stream().map<String>(Function<StatusEnum, String> { it.name })
.collect<Set<String>, Any>(Collectors.toSet())
不幸的是,这有编译错误:
- 接口函数没有构造函数
- 类型推断失败。预期类型不匹配:推断类型为 Collector!>!但是收藏家!>!预计
- 未解决的参考:它
这是我第一次尝试将一些代码转换为 Kotlin。我已经查看了 Functions and Lambdas section of the documentation。仍然不清楚这里发生了什么或如何解决它。
使用 Kotlin 方法代替 Java 流:
val names = StatusEnum.values()
.map { it.name }
.toSet()