为什么这个Kotlin对象继承自身?
我正在尝试使用Kotlin与TeamCity进行交互。
当您将项目转换为Kotlin(来自.xml)时,将会有一个名为Project.kt的文件,您可以在其中设置所有配置。
没有编辑我的看起来像这样:
object Project : Project(/* Some Function Literal with Receiver */)
这看起来像循环继承? 有一些进口,我省略,但肯定不会有很大的区别? 这个名字可以用不同的方式来解释,这取决于它在文件中出现的位置吗?
我的想法是这样解释对象签名:
- object =单例的对象声明。
- 项目 (第一次出现)=对象的名称。
- : =继承标记。
- 项目 (第二次出现)=继承的基类。
- () =对基类的构造函数调用。
这是循环遗传还是我错过了一些关于Kotlin的东西? 我已经看过这里 ,看来无法找到我的答案。
假设有资格的类other.Project
和my.Project
,你可以在不同的包中使用相同的名字定义两个不同的类。
由于my.Project
被定义为一个Singleton,所以你不能从它扩展,而实际的基类是other.Project
。 Kotlin聪明到足以区分。 如果你试图对类声明做同样的事情,你会得到一个循环继承。
你甚至可以尝试强制从Singleton强制扩展,但是你将会有错误无法从Singleton继承 。 所以基本上这只有在你导入了正确的类的时候才有效果。