是不是;“内部”;可见度修饰符在Kotlin工作了吗?
假设Kotlin中的一个模块意味着一个项目(尽管最好看看Kotlin模块的确切定义意味着什么..文档中不清楚) Kotlin可见性修改器是否有效。我有两个项目,一个主项目和一个测试项目,具有不同的、不重叠的包路径。测试项目依赖于主项目(在Eclipse中)。主项目中的接口或类是否标记为public似乎并不重要。在测试项目中,不管发生什么情况,主要的项目接口/类都是可访问的。唯一的区别是,如果您将主项目标记为private,那么就会出现可见性问题。但无论是否公开,这似乎没有任何区别是不是;“内部”;可见度修饰符在Kotlin工作了吗?,kotlin,Kotlin,假设Kotlin中的一个模块意味着一个项目(尽管最好看看Kotlin模块的确切定义意味着什么..文档中不清楚) Kotlin可见性修改器是否有效。我有两个项目,一个主项目和一个测试项目,具有不同的、不重叠的包路径。测试项目依赖于主项目(在Eclipse中)。主项目中的接口或类是否标记为public似乎并不重要。在测试项目中,不管发生什么情况,主要的项目接口/类都是可访问的。唯一的区别是,如果您将主项目标记为private,那么就会出现可见性问题。但无论是否公开,这似乎没有任何区别 从文档中我可以
从文档中我可以看出,省略接口或类上的可见性修饰符会影响默认的可见性,即在当前Kotlin中,
内部
可见性修饰符确实是强制的
在报告中说:
可见性检查受到限制,例如,公共声明不能公开本地、私有或内部类型。在编译器和IDE中检查对内部声明的访问
政府有两点支持这一点:
- 在编译器中检查内部可见性
- 内部函数和属性的名称已损坏(java互操作)
- 在编译器中检查内部(不仅仅是IDE)
- 接口中禁止使用受保护和内部构件
- 现在在模块外部检查对内部的访问(详情如下)李>
- 默认可见性(无修改器)从内部更改为公共
- 我们最终启用了拒绝在模块外使用内部声明的检查
因此,它显然是功能性和工作性的。值得注意的一点是,它仅适用于Kotlin模块,但仍然可以从Java模块访问“内部”声明,尽管它显示了检查报告(警告)
至少对于格拉德来说,他们没有。我试图创建一个模块依赖于另一个模块的多模块项目,甚至当我在模块
A
中将classA明确标记为internal
时,它在模块b
中仍然可见。默认可见性的可能副本现在是public
<必须明确指定代码>内部
。