spring之Java Stream with::Kotlin 新手
me-sa
阅读:151
2025-06-02 22:19:02
评论:0
我正在尝试将以下 Spring Security 代码从 Java 转换为 Kotlin。
Java:
Collection<? extends GrantedAuthority> authorities =
Arrays.stream(claims.get(AUTHORITIES_KEY).toString().split(","))
.map(SimpleGrantedAuthority::new)
.collect(Collectors.toList());
Kotlin
val authorities = Arrays.stream(claims[AUTHORITIES_KEY].toString().split(",".toRegex()).dropLastWhile { it.isEmpty() }.toTypedArray())
.map(SimpleGrantedAuthority())
.collect(Collectors.toList<SimpleGrantedAuthority>())
我在 Required: Function<in String!, out (???..???)>! 上遇到类型不匹配 错误 ( .map(SimpleGrantedAuthority()) ) .如何使用 ::new 将上述 Java 代码转换为 Kotlin关键字正确吗?
请您参考如下方法:
使用 Arrays.stream 不会使代码 super 可读:
val authorities = Arrays.stream(claims.get(AUTHORITIES_KEY).toString().split(",").toTypedArray())
.map(::SimpleGrantedAuthority).collect(Collectors.toList<SimpleGrantedAuthority>())
但是在 Kotlin 中你可以做得更好:
val authorities = claims.get(AUTHORITIES_KEY).toString()
.split(",").filterNot { it.isEmpty() }
.map(::SimpleGrantedAuthority)
声明
1.本站遵循行业规范,任何转载的稿件都会明确标注作者和来源;2.本站的原创文章,请转载时务必注明文章作者和来源,不尊重原创的行为我们将追究责任;3.作者投稿可能会经我们编辑修改或补充。



