he la siguiente anotación Java defineCómo acceder anotación definido en el campo de la clase en tiempo de ejecución caso
@Target({ElementType.METHOD, ElementType.PARAMETER, ElementType.CONSTRUCTOR, ElementType.FIELD})
@Retention(RetentionPolicy.RUNTIME)
public @interface MyAnnotation {
String value() default "";
}
Y he la siguiente clase de caso Scala definido:
@Prefer("xyz")
case class TestAnno(arg1 : String, @Prefer("abc") agr2 : String)
estoy poder ver la anotación definida en el nivel de clase de caso utilizando la reflexión, pero no puedo acceder a la anotación definida para arg2
miembro de la clase de caso TestAnno
. Descompilando el código veo que ni la declaración de la variable ni su acceso scala parecen tener la anotación. Solo la definición de constructor y el método copy
parecen conservar la anotación para los parámetros definidos en la declaración de clase de caso.
¿Hay alguna otra manera de forzar al compilador Scala para generar anotaciones para los campos declarados en la clase de caso o tengo que leer el constructor y el uso de una biblioteca como ASM ByteCode Library o ParaNamer para encontrar los parámetros que tienen que anotaciones? Necesita una solución que funcione principalmente para las clases de casos de Scala.
Dependiendo de cómo se accede a estos parámetros por reflexión, es posible que tenga que añadir '@ setter', '@ getter', o' @ param' en lugar o junto con '@ field'. (Puedes probar con todos ellos y eliminarlos uno a uno.) – al3xar