什么是有限通配符类型的Java注释字段的kotlin equivlant?

说我有这样的Java注释:

public @interface Foo { Class<? extends Bar> value(); } public interface Bar {} 

我应该如何将Foo翻译成kotlin? 在这种情况下,我只能切换回Java吗?

Kotlin注释不能有方法定义。 但是,它们可以具有构造函数参数。 我认为这个工作就像你想要的那样:

 import kotlin.reflect.KClass interface Bar class Foo : Bar @Target(AnnotationTarget.FUNCTION) annotation class Test(val value: KClass<out Bar>) @Test(Foo::class) fun testAnnotation() { println("Test") } 

注意KClass类型参数的out修饰符。 它使得类型参数是协变的 ,这意味着它可以是Bar类型或任何实现Bar类型。