Kotlin中缀函数阴影/隐藏成员函数

时间:2018-03-08 14:21:14

标签: jersey kotlin jersey-2.0 kotlin-extension

我只是想用Kotlin写一些例子。我所做的就是创建一个Jersey应用程序,一切顺利,直到我尝试将Main.java类更改为Main.kt

生成的Main.java类具有此方法;

public static HttpServer startServer() {
    final ResourceConfig rc = new ResourceConfig()
            .packages("com.kotlinexperiments")
            .register(new AbstractBinder() {
                @Override
                protected void configure() {
                    bind(new UserService()).to(IUserService.class);
                }
            });

    return GrizzlyHttpServerFactory.createHttpServer(URI.create(BASE_URI), rc);
}

我尝试将其转换为Kotlin文件;

fun startServer(): HttpServer {
    val resourceConfig = ResourceConfig()
            .packages("com.kotlinexperiments")
            .register(object: AbstractBinder() {
                override fun configure() {
                    bind(UserService()).to(IUserService::class)
                }
            })

    return GrizzlyHttpServerFactory.createHttpServer(URI.create(baseUri), resourceConfig)
}

问题是,当您使用bind(someInstance).to(class)键入IDE时,它会显示成员函数,但是当您运行/调试它时,它将进入已在Tuples.kt文件中定义的中缀函数,与kotlin-stdlib一起分发。

问题是,有没有办法调用成员函数?我试图逃避函数名称等,但实际上没有任何效果。

日Thnx!

1 个答案:

答案 0 :(得分:1)

替换

bind(UserService()).to(IUserService::class)

bind(UserService()).to(IUserService::class.java)