14

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

因此,我的问题是:

  1. kotlin 中的模块是什么?

  2. 访问修饰符 internal 与 public 修饰符有何不同?

4

1 回答 1

6

Kotlin 编译器版本 M8 (0.8.11) 忽略模块,更准确地说,它的工作方式就像您的所有代码都放在同一个模块中一样,这就是为什么您无法为internal.

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

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

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

于 2014-09-13T08:12:54.540 回答