Где определяется Enum :: valueOf? - PullRequest
0 голосов
/ 09 апреля 2020

Когда я определяю перечислимый класс в Kotlin

enum class Answer {
    YES,
    NO
}

К нему прикреплен valueOf(value: String).

val doYouWantBeerOrCoffee = Answer.valueOf("YES") // Answer.YES

Но где на самом деле определяется эта функция? Это определенно не в Enum.Kt и использование инструмента Idea Go to Implementation только возвращает меня к моему определению Answer enum.

Ответы [ 2 ]

1 голос
/ 09 апреля 2020

Генерируется компилятором. Это то, что "syntheti c" означает в

Классы перечисления в Kotlin имеют методы syntheti c, позволяющие перечислить определенные константы перечисления и получить константу перечисления по ее имени .

Если вы декомпилируете Answer.class, вы увидите его, но он нигде не записан в виде Kotlin (или Java) исходного кода.

0 голосов
/ 09 апреля 2020

Этот метод является частью JDK и определен в Enum.java классе. Который является общим базовым классом для всех типов перечисления Java. Kotlin использует тот же класс для перечислений

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