Java实现接口代码转Kotlin报错

丸子爸 发布于 03/15 17:49
阅读 66
收藏 0

描述:使用Spring-Cloud-Getway的时候,想写一个全局过滤器,在实现AbstractGatewayFilterFactory下边的apply方法时候,发现在Java中正常编译的代码,转Kotlin后报错(类型不匹配),想问下是语法问题还是其他什么原因造成的呢?

运行环境:JDK(1.8), Kotlin(1.2.71), IDEA(2018.2)

异常:

Java代码(正常编译):

public class Test extends AbstractGatewayFilterFactory<Test.Config> {

    @Override
    public GatewayFilter apply(Config config) {
        return this::filter;
    }

    private Mono<Void> filter(ServerWebExchange exchange, GatewayFilterChain chain){
        return chain.filter(exchange);
    }

    class Config{

    }
}

Kotlin代码(this::filter报错):

class IgnoreGlobalFilterFactory : AbstractGatewayFilterFactory<IgnoreGlobalFilterFactory.Config>(Config::class.java) {

    override fun apply(config: IgnoreGlobalFilterFactory.Config): GatewayFilter? {
        return this::filter
    }

    fun filter(exchange: ServerWebExchange, chain: GatewayFilterChain): Mono<Void>? {
        return chain.filter(exchange)
    }

    class Config
}
加载中
0
bako
bako
语法有问题kotlin双冒号跟java不一样需要手动改造
0
xiaolei123
xiaolei123

兄弟搞笑了,那么完美的转换,那你直接用world写中文需求,然后一键转换成代码不就完了?

0
丸子爸

引用来自“xiaolei123”的评论

兄弟搞笑了,那么完美的转换,那你直接用world写中文需求,然后一键转换成代码不就完了?

最开始只复制了方法里边的this::filter语句,没有转换出来。

然后重新复制了下整个方法体,this::filter内容默认转换成 GatewayFilter { exchange, chain -> this.filter(exchange, chain) } 就好了,感谢。

返回顶部
顶部