2

如您所知,Kotlin 中的私有类在引擎盖下更改为包私有,内部更改为公共。不幸的是,这可能会导致这里的已知问题。

如果编译器看到 Kotlin 内部类的使用情况,想把它改成字节码,它可以为包外没有使用的内部 kotlin 类选择 package-private,其他的选择 public,这样我们就可以处理了以上问题由我们自己解决。

或者他们可以在内部类之前定义另一个注释,例如@JvmPackagePrivate,以告诉编译器我们想要java中的包私有类。

或者他们可以两者都做。

问题是,为什么他们没有用如此明显的解决方案来解决这个明显的问题?

他们有另一种方法来解决这个问题吗?

我刚刚熟悉了 Kotlin,所以我认为我不能用 kotlin 为 java 创建 lib,因为当我创建内部具体类时,所有客户端都可以在库之外看到它们以及它与 kotlin 的严重问题。为什么他们看不到这个明显的问题??????

我想提一下,这里的答案都没有解决这个问题,因为 @JvmSynthetic 和 @JvmName 只是针对 kotlin 中的乐趣,而不是类,最后它们都是可见的,即使它们更改了类的名称。

最后kotlin声称它与java完全可以互操作,但我认为这是不对的。最好说它与 java 有 99% 的互操作性 :)

4

0 回答 0