当前位置: 首页 > 知识库问答 >
问题:

Kotlin 中内部可见性修饰符的范围

柯瀚玥
2023-03-14

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

因此,我的问题是:

>

  • kotlin中的模块是什么?

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

  • 共有1个答案

    尉迟俊能
    2023-03-14

    Kotlin编译器版本M8(0.8.11)忽略模块,更准确地说,它的工作方式就像所有代码都放在同一个模块中一样,这就是为什么您无法获得<code>内部<code>的可见性错误。

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

    更新:M8中未启用此功能,推迟到稍后

    更新:自从后来的静态编程语言里程碑和测试版以来,这已经打开

     类似资料:
    • private private修饰符是我们使用的最限制的修饰符。它表示它只能被自己所在的文件可见。所以如果我们给一个类声明为private,我们就不能在定义这个类之外的文件中使用它。 另一方面,如果我们在一个类里面使用了private修饰符,那访问权限就被限制在这个类里面了。甚至是继承这个类的子类也不能使用它。 所以一等公民,类、对象、接口……(也就是包成员)如果被定义为private,那么它们只

    • Kotlin中这些修饰符是与我们Java中的使用是有些不同的。在这个语言中默认的修饰符是public,这节约了很多的时间和字符。但是这里有一个详细的解释关于在Kotlin中不同的可见性修饰符是怎么工作的。

    • 假设您正在编写一个Android项目(不是库)。所有文件都编译在一起,因此......在这种情况下使用可见性修饰符有任何意义吗?

    • 问题内容: 在类的前面和构造函数的前面使用修饰符(在本例中为package- private)有什么区别?我认为构造函数前面的修饰符意味着可以实例化该类的实例。但是班级前面的修饰符呢? 问题答案: 首先,由3个访问修饰符创建4个访问级别。 公共-随处可见 受保护-可在同一个包装中以及儿童中使用 默认-仅在同一程序包中可访问 私人-仅在同一班级可以访问。 您是正确的-构造函数级别的修饰符与类的实例直

    • 所有构造函数默认都是public的,它们类是可见的,可以被其它地方使用。我们也可以使用这个语法来把构造函数修改为private: class C private constructor(a: Int) { ... }

    • 我们已经准备好使用public来进行重构了,但是我们还有很多其它细节需要修改。比如,在RequestForecastCommand中,我们在构造函数中我们创建的属性zipCode可以定义为private: class RequestForecastCommand(private val zipCode: String) 所作的事情就是我们创建了一个不可修改的属性zipCode,它的值我们只能去得到