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) 


标签:java
声明

1.本站遵循行业规范,任何转载的稿件都会明确标注作者和来源;2.本站的原创文章,请转载时务必注明文章作者和来源,不尊重原创的行为我们将追究责任;3.作者投稿可能会经我们编辑修改或补充。

关注我们

一个IT知识分享的公众号