我有下一个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注释?
答案 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