Kotlin – 如何从另一个文件访问我的新类扩展功能

我对Kotlin很新。

我想能够添加一个函数到我的抽象类,所以当我定义该函数时,我将能够在该类的每个孩子(他们继承了抽象类)

但是,我想在其他文件中定义这些扩展功能。 当我尝试在抽象类的特定子实现上调用它们时,我无法访问这些函数。

我需要做什么来解决我的问题?

我想通过能够实现这样的事情:

abstract class Parent(val val1, val val2, val val3){} class Child(var val1, var val2, var val3) : Parent(val1, val2, val3){} class Child2(var val1, var val2, var val3) : Parent(val1, val2, val3){} 

父母和所有孩子的扩展方法:

  fun Parent.convertToChild2( ): Child2? { return //some creation method of Child2 } 

我想能够调用这个:

 child: Child child.convertToChild2 

我在单独的文件中定义了所有类,并且在其他文件中定义了扩展功能。

我不能访问这样的功能 – 不可见。

首先:你的源代码中有很多错误,你应该在问这里的问题之前修正(缺少构造函数中的类型注释,缺少val / var等)。

对你的问题:通常,即使在不同的kt文件中定义,你也可以访问扩展功能。 阅读有关扩展范围的官方文档。

导入您的扩展功能非常重要

满足我的问题的答案只是将方法提取到其他文件中的某个“对象”结构,并且每当我们要访问该函数时,我们都必须将路径(package.object.method)导入到此。

但问题是,IDE是不是提出我的扩展功能的路径 – 我必须自己导入。

我正在使用Android Studio 3预览,希望这将被修复。

UPDATE

最好把这些函数定义成简单的Kotlin文件,这样函数就不会被任何结构所拥有。 那么从任何地方通过IDE自动导入它们都不会有问题。