我在理解内部访问修饰符时遇到问题。在我的示例中,我无法产生任何行为与公开不同的情况。即使我创建了一个 jar,我也可以从 jar 外部访问 jar 中的内部函数(来自与 jar 中使用的包无关的不同包)。在文档中使用了术语模块,但我无法找出模块的确切含义。
因此,我的问题是:
kotlin 中的模块是什么?
访问修饰符 internal 与 public 修饰符有何不同?
我在理解内部访问修饰符时遇到问题。在我的示例中,我无法产生任何行为与公开不同的情况。即使我创建了一个 jar,我也可以从 jar 外部访问 jar 中的内部函数(来自与 jar 中使用的包无关的不同包)。在文档中使用了术语模块,但我无法找出模块的确切含义。
因此,我的问题是:
kotlin 中的模块是什么?
访问修饰符 internal 与 public 修饰符有何不同?
Kotlin 编译器版本 M8 (0.8.11) 忽略模块,更准确地说,它的工作方式就像您的所有代码都放在同一个模块中一样,这就是为什么您无法为internal
.
从下一个里程碑版本开始,您创建的每个 IDE 模块都有自己的可见性范围,当您尝试internal
从另一个模块中的一个模块访问声明时,您会收到错误消息。另一方面,公众在整个项目中都是可见的。
更新:这在 M8 中没有打开,推迟到以后
更新:自从后来的 Kotlin 里程碑和测试版以来,这已经打开