什么是有限通配符类型的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
类型。