我在理解内部访问修饰符时遇到问题.在我的例子中,我不能产生任何与公共行为不同的情况.即使我创建了一个jar,我也可以从jar外部访问jar中的内部函数(来自与jar中使用的包不相关的其他包).在文档中使用了术语模块,但我无法找到模块的确切内容.
我的问题是:
什么是kotlin的模块?
访问修饰符内部与公共modiefier有何不同?
我有一个带有实现的结构,该实现具有访问结构的私有状态的函数.
struct Example {...}
impl Example {
fn test(&self) -> .. {...}
}
Run Code Online (Sandbox Code Playgroud)
在另一个模块中的其他地方存在另一个特征:
trait ExampleTrait {
fn test(&self) -> .. {...}
}
Run Code Online (Sandbox Code Playgroud)
现在我想实现ExampleTrait
的Example
结构和测试方法转发到测试impl
的结构.
以下代码:
impl ExampleTrait for Example {
fn test(&self) -> .. {
self.test()
}
}
Run Code Online (Sandbox Code Playgroud)
显然是一个无限的递归调用.我不能只重复原始测试的主体,因为我无法访问Example
此处的私有状态.
有没有其他方法可以做到这一点,除了重命名一个功能或在Example
公共场所制作字段?