通过 Java 从 Kotlin 访问内部方法

Bru*_*ins 4 android kotlin

如何通过 Java 类访问内部 Kotlin 方法而不使用奇怪的语法 <method_name>$<module>()?

代码示例。

科特林类:

class MyKotlinClass {
    internal fun myInternalKotlinMethod() {
        // Do something
    }
}
Run Code Online (Sandbox Code Playgroud)

Java类:

public class MyJavaClass {
    public MyJavaClass() {
        MyKotlinClass myKotlinClass = new MyKotlinClass();
        myKotlinClass.myInternalKotlinMethod$app_debug();
    }
}
Run Code Online (Sandbox Code Playgroud)

Ens*_*lic 6

这是没有办法解决的。这就是它应该如何工作的。

根据关于从 Java 代码调用 Kotlin 代码的官方文档(强调我的):

  • internal声明变成public了Java。类的成员internal会经过名称修改,以使其更难从 Java 中意外使用它们,并允许根据 Kotlin 规则重载具有相同签名但彼此看不到的成员;