¿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 .

  • Hace Cualquiera == Objeto
  • Rasgos de Kotlin y retroadaptación
  • reference no resuelta: text - Android Studio + Kotlin (findViewById fault?)
  • Kotlin: ¿A dónde deberían ir las funciones de nivel superior?
  • Java Wildcard-types vs Kotlin Star-projection
  • Usar Kotlin en un module de biblioteca sin usarlo en el module de la aplicación
  • Lista de Kotlin vs array de
  • ¿Hay alguna forma de reutilizar una instancia de Job?
  • Conversión de layout lineal a cuadrícula
  • Cómo pasar los valores de actividad a otra actividad en kotlin
  • Android Espresso: cómo ejecutar la configuration solo una vez para todas las testings