如何在Kotlin注释中编写成员?

时间:2019-06-14 06:42:19

标签: java kotlin annotations

我有下一个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

如果不允许成员,如何在Kotlin中转换Java注释?

2 个答案:

答案 0 :(得分:1)

在Kotlin中,您必须定义属性,而不是注释中的函数:

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

有关详细信息,请参见https://kotlinlang.org/docs/reference/annotations.html

答案 1 :(得分:1)

可能是“ 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