问题描述
我试图弄清楚从 Java 的角度来看,内部 类会发生什么。
在 docs 中找到了这个:
内部类的成员经过名称修改,以使其更难在 Java 中意外使用它们,并允许重载具有相同签名但根据 Kotlin 规则彼此不可见的成员
所以我很想知道它在实践中的样子。
我创建了一个简单的 Kotlin 类:
internal class Foo(i : Int) {}
建了一个项目,解压jar包,用javap查看实际的类...它显示了一个标准的公共类,原名:
Compiled from "Foo.kt"
public final class Foo {
public Foo(int);
}
我错过了什么吗?还是只是文档具有误导性?
文档提到内部类的成员,但我也尝试过:
internal class Foo(someInt : Int) {
var someString : String
get() {
Todo()
}
set(value) {}
fun foo() { }
class Bar { }
}
并得到预期的输出:
Compiled from "Foo.kt"
public final class Foo {
public Foo(int);
public final java.lang.String getSomeString();
public final void setSomeString(java.lang.String);
public final void foo();
}
和:
Compiled from "Foo.kt"
public final class Foo$Bar {
public Foo$Bar();
}
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)