首页 文章

Kotlin - 我如何从另一个文件访问我的新类扩展函数

提问于
浏览
2

我对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

我在单独的文件中定义了所有类,并在其他文件中定义了扩展函数 .

我无法访问这样的功能 - 不可见 .

2 回答

  • 2

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

    对于您的问题:通常,即使在不同的kt文件中定义,您也可以访问扩展功能 . 阅读涵盖extension scopes的官方文档 .

    It's important to import your extension function

  • 6

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

    但问题是,IDE并没有建议我扩展功能的路径 - 我必须自己导入它 .

    我正在使用Android Studio 3预览版,希望这将得到修复 .

    UPDATE

    最好在普通的Kotlin文件中定义这些函数,因此函数不会被任何结构所拥有 . 然后,IDE从任何地方自动导入这些都不是问题 .

相关问题