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



我在理解内部访问修饰符时遇到问题。在我的例子中,我无法产生任何与公开不同的情况。即使我创建了一个jar,我也可以从jar之外(从与jar中使用的包无关的不同包)访问jar中的内部函数。在文档中使用了模块一词,但我找不到模块到底是什么。

因此,我的问题是:

  1. 科特林的模块是什么?

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

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

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

更新:这在M8中尚未打开,推迟到稍后的

更新:自后来的Kotlin里程碑和测试版

以来,该功能一直处于启用状态

最新更新