如您所知,Kotlin中的私有类在幕后变成了包私有,内部结构也变成了公众。 不幸的是,这可能会导致已知问题here。
如果编译器希望将其更改为字节码时看到Kotlin内部类的用法,则可以为未在包外部使用的内部kotlin类选择package-private,并为其他人选择public。我们可以自己解决上述问题。
或者他们可以在内部类之前定义另一个注释,例如@JvmPackagePrivate,以告诉编译器我们需要Java中的package-private类。
或者他们都可以做。
问题是,为什么他们不能用如此明显的解决方案解决这个明显的问题?
他们还有另一种解决方法吗?
我只是熟悉Kotlin,所以我认为我无法使用kotlin创建Java的lib,因为当我创建内部具体类时,所有客户端都可以在库外看到它们,这是kotlin的严重问题。为什么他们看不到这个明显的问题?????
我想提到here中的所有答案都不能解决这个问题,因为@JvmSynthetic和@JvmName只是针对kotlin的乐趣,而不是针对类的,最后即使它们更改了名称,它们都可见的课程。
最后,kotlin声称它可以与Java完全互操作,但我认为这是不对的。最好说它与Java有99%的互操作性:)