Kotlin内部可见性修改器的范围

Mar*_*cht 13 visibility kotlin

我在理解内部访问修饰符时遇到问题.在我的例子中,我不能产生任何与公共行为不同的情况.即使我创建了一个jar,我也可以从jar外部访问jar中的内部函数(来自与jar中使用的包不相关的其他包).在文档中使用了术语模块,但我无法找到模块的确切内容.

我的问题是:

  1. 什么是kotlin的模块?

  2. 访问修饰符内部与公共modiefier有何不同?

And*_*lav 6

Kotlin编译器版本M8(0.8.11)忽略了模块,更准确地说,它的工作就好像所有代码都放在同一个模块中一样,这就是为什么你不能获得可见性错误的原因internal.

从下一个里程碑版本开始,您创建的每个IDE模块都有自己的可见范围,当您尝试internal从另一个模块访问声明时,会出现错误.另一方面,公众在整个项目中都可见.

更新:这在M8中没有打开,推迟了以后

更新:自从后来的Kotlin里程碑和测试版以来,这已经开启

  • 是的,我们计划在下一个里程碑中最终启用它们 (2认同)