Kotlin: Как получить доступ к полю с тем же именем, что и расширение? - PullRequest
0 голосов
/ 08 марта 2020

У меня есть следующее расширение поля

import com.google.gson.annotations.SerializedName

val Enum<*>.serializedName: String get() = javaClass.getField(name).getAnnotation(SerializedName::class.java).value

Теперь, если мое перечисление имеет то же имя поля, что и расширение serializedName, как я могу получить доступ к полю расширения. Мой текущий подход заключается в приведении к Enum

enum class MyEnum {
    FIELD_1,
    FIELD_2
    ;
    val serializedName = (this as Enum<*>).serializedName 
}

1 Ответ

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

Вы не можете. Это описано в официальной документации kotline https://kotlinlang.org/docs/reference/extensions.html

Если класс имеет функцию-член и определена функция расширения, которая имеет тот же тип получателя, то же имя, и применимо к заданным аргументам, член всегда побеждает. Например:

...