Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/kotlin/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
是不是;“内部”;可见度修饰符在Kotlin工作了吗?_Kotlin - Fatal编程技术网

是不是;“内部”;可见度修饰符在Kotlin工作了吗?

是不是;“内部”;可见度修饰符在Kotlin工作了吗?,kotlin,Kotlin,假设Kotlin中的一个模块意味着一个项目(尽管最好看看Kotlin模块的确切定义意味着什么..文档中不清楚) Kotlin可见性修改器是否有效。我有两个项目,一个主项目和一个测试项目,具有不同的、不重叠的包路径。测试项目依赖于主项目(在Eclipse中)。主项目中的接口或类是否标记为public似乎并不重要。在测试项目中,不管发生什么情况,主要的项目接口/类都是可访问的。唯一的区别是,如果您将主项目标记为private,那么就会出现可见性问题。但无论是否公开,这似乎没有任何区别 从文档中我可以

假设Kotlin中的一个模块意味着一个项目(尽管最好看看Kotlin模块的确切定义意味着什么..文档中不清楚)

Kotlin可见性修改器是否有效。我有两个项目,一个主项目和一个测试项目,具有不同的、不重叠的包路径。测试项目依赖于主项目(在Eclipse中)。主项目中的接口或类是否标记为public似乎并不重要。在测试项目中,不管发生什么情况,主要的项目接口/类都是可访问的。唯一的区别是,如果您将主项目标记为private,那么就会出现可见性问题。但无论是否公开,这似乎没有任何区别


从文档中我可以看出,省略接口或类上的可见性修饰符会影响默认的可见性,即在当前Kotlin中,
内部
可见性修饰符确实是强制的

在报告中说:

可见性检查受到限制,例如,公共声明不能公开本地、私有或内部类型。在编译器和IDE中检查对内部声明的访问

政府有两点支持这一点:

  • 在编译器中检查内部可见性
  • 内部函数和属性的名称已损坏(java互操作)
最后一点对于防止Java看到内部作用域标识符并与之交互至关重要

其中还提到:

  • 在编译器中检查内部(不仅仅是IDE)
  • 接口中禁止使用受保护和内部构件
再往回看,这张照片还显示:

  • 现在在模块外部检查对内部的访问(详情如下)
  • 默认可见性(无修改器)从内部更改为公共
  • 我们最终启用了拒绝在模块外使用内部声明的检查

因此,它显然是功能性和工作性的。

值得注意的一点是,它仅适用于Kotlin模块,但仍然可以从Java模块访问“内部”声明,尽管它显示了检查报告(警告)


至少对于格拉德来说,他们没有。我试图创建一个模块依赖于另一个模块的多模块项目,甚至当我在模块
A
中将class
A明确标记为
internal
时,它在模块
b
中仍然可见。默认可见性的可能副本现在是
public
<必须明确指定代码>内部