Как написать член в аннотации Kotlin? - PullRequest
0 голосов
/ 14 июня 2019

У меня есть следующая аннотация Java:

@Retention(RetentionPolicy.RUNTIME)
@MapKey
@interface ViewModelKey {
    Class<? extends ViewModel> value();
}

Чтобы преобразовать его в аннотацию Kotlin, я переписал его следующим образом:

@Retention(AnnotationRetention.RUNTIME)
@MapKey
annotation class ViewModelKey {
    fun value(): Class<out ViewModel> {}
}

Но есть ошибка: Members are not allowed in annotation class.

Если членам запрещено, как я могу преобразовать аннотацию Java в Kotlin?

Ответы [ 2 ]

1 голос
/ 14 июня 2019

Это может быть "KClass";

@Retention(RetentionPolicy.RUNTIME)
@MapKey
internal annotation class ViewModelKey(val value: KClass<out ViewModel>)

https://kotlinlang.org/api/latest/jvm/stdlib/kotlin.reflect/-k-class/index.html

1 голос
/ 14 июня 2019

В Kotlin вы должны определять свойства, а не функции в аннотациях:

@Retention(AnnotationRetention.RUNTIME)
@MapKey
annotation class ViewModelKey(val value: KClass<out ViewModel>)

Подробнее см. https://kotlinlang.org/docs/reference/annotations.html.

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