создать вложенный класс (kt) для существующего класса (java), расширения - PullRequest
0 голосов
/ 22 октября 2018

позволяет ли компилятор Kotlin расширять классы внутренними и / или вложенными классами, и если да, то каков правильный синтаксис?

в EnclosingClass.java

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

thisвот что я не уверен ниже:

в EnclosingClassExtensions.kt

class EnclosingJavaClass.NestedKotlinClass {
    // ...
}

при условии, что EnclosingClass.java нельзя изменить (например, код библиотеки), можетя объявляю как-то EnclosingClass.SomeNewKotlinClass?

1 Ответ

0 голосов
/ 22 октября 2018

Не уверен, что ваш вопрос.

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() {}
...