为什么这个Kotlin对象继承自身?

我正在尝试使用Kotlin与TeamCity进行交互。

当您将项目转换为Kotlin(来自.xml)时,将会有一个名为Project.kt的文件,您可以在其中设置所有配置。

没有编辑我的看起来像这样:

object Project : Project(/* Some Function Literal with Receiver */) 

这看起来像循环继承? 有一些进口,我省略,但肯定不会有很大的区别? 这个名字可以用不同的方式来解释,这取决于它在文件中出现的位置吗?

我的想法是这样解释对象签名:

  • object =单例的对象声明。
  • 项目 (第一次出现)=对象的名称。
  • =继承标记。
  • 项目 (第二次出现)=继承的基类。
  • () =对基类的构造函数调用。

这是循环遗传还是我错过了一些关于Kotlin的东西? 我已经看过这里 ,看来无法找到我的答案。

假设有资格的类other.Projectmy.Project ,你可以在不同的包中使用相同的名字定义两个不同的类。

由于my.Project被定义为一个Singleton,所以你不能从它扩展,而实际的基类是other.ProjectKotlin聪明到足以区分。 如果你试图对类声明做同样的事情,你会得到一个循环继承。

你甚至可以尝试强制从Singleton强制扩展,但是你将会有错误无法从Singleton继承 。 所以基本上这只有在你导入了正确的类的时候才有效果。