Как получить и stati c, и доступ экземпляра к полю классов - PullRequest
1 голос
/ 11 марта 2020

Предположим, у меня есть абстрактный суперкласс A. Этот класс имеет свойство abstract val predicate: (ModelClass) -> Boolean.

Пусть B будет подклассом.

Я хочу иметь возможность выполнять оба из следующих действий:

  • Используйте предикат из экземпляра aInstance.predicate
  • Также используйте этот предикат в другом месте, без необходимости создавать экземпляр для получения этого предиката B.predicate

Как я могу это сделать.

Ответы [ 2 ]

2 голосов
/ 11 марта 2020

Я не думаю, что это возможно.

В Kotlin или Java не существует такого понятия, как абстрактный метод stati c.

Возможно, это даст больше понимания.

1 голос
/ 11 марта 2020

Ваш класс должен быть абстрактным? Может быть, код ниже может быть полезен:

open class MyClass {
    companion object myCompanion {
        val myStatic = "MyClass"
    }
    open val myStatic = myCompanion.myStatic
}

class MySubClass : MyClass() {
    companion object myCompanionSubClass {
        val myStatic = "MySubClass"
    }
    override var myStatic = myCompanionSubClass.myStatic
}

fun main() {
    println(MyClass.myStatic)
    val t = MyClass()
    println(t.myStatic)

    println(MySubClass.myStatic)
    val subClass = MySubClass()
    println(subClass.myStatic)
}

В этом коде вы можете определить свойство stati c и использовать его из класса или любого экземпляра. Также возможно переопределить свойство в подклассе и использовать его таким же образом.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...