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自动导入它们都不会有问题。