为现有的类(java)创建扩展类(kt),扩展

时间:2018-10-22 17:51:51

标签: kotlin nested extension-methods inner-classes

Kotlin编译器是否允许使用内部和/或嵌套类扩展类?如果是,正确的语法是什么?

EnclosingClass.java

中的

class EnclosingJavaClass {
    class NestedJavaClass1 {}
    class NestedJavaClass2 {}
    // ...
}

这是我不确定的内容,

EnclosingClassExtensions.kt

中的

class EnclosingJavaClass.NestedKotlinClass {
    // ...
}

假设EnclosingClass.java无法修改(例如:库代码),我可以以某种方式声明EnclosingClass.SomeNewKotlinClass吗?

1 个答案:

答案 0 :(得分:0)

不确定您的问题。

open class EnclosingJavaClass {
     open class NestedJavaClass1
     open class NestedJavaClass2
}
//extend class - classes and fun in parent must be open
class ExtendEnclosing : EnclosingJavaClass()
class ExtendJavaClass1 : EnclosingJavaClass.NestedJavaClass1()
// extension fun
fun EnclosingJavaClass.NestedJavaClass1.functionName() {}