¿Cuál es el campo de anotación de Kotlin Equivlant a Java con el tipo de comodín delimitado?

Digamos que tengo una anotación en Java como esta:

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

¿Cómo debo traducir Foo en kotlin? ¿Es cierto que solo podría volver a Java en esa situación?

Las annotations de Kotlin no pueden tener definiciones de método. Sin embargo, pueden tener parameters de constructor. Creo que esto funciona como lo quieres:

 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") } 

Observe el modificador de salida en el parámetro de tipo KClass . Hace que el parámetro de tipo sea covariante , lo que significa que puede ser de tipo Bar o cualquier tipo que implemente Bar .

  • Kotlin: atribuye visibilidad al object complementario
  • Forma rápida de get el número de mes de java.util.Date
  • Android w / Kotlin pure-java-Junit NoClassDefFoundError solución no funciona
  • Anotación de Kotlin + Dagger2 @Named en el uso del método del proveedor del module
  • Referencia no resuelta para Holdr en Kotlin
  • Kotlin: deshacerse de los moldes sin marcar para Comparable
  • ¿Por qué escribimos NextActivity :: class.java aunque esta es una class de kotlin?
  • Envolver todos los methods internos con el mismo try-catch en Kotlin
  • Cómo usar generics en un object complementario
  • Spring Boot: cambio de significado de marcador de position de propiedad
  • La animation circular no juega