una pildorasinformaticas otra objeto externas dentro curso crear clases clase anonimas anidadas java annotations

pildorasinformaticas - curso java 52



Anotar clase interna anĂ³nima (3)

Aún no. Esta característica es sugerida por JSR 308 , y puede incluirse en futuras versiones de Java.

¿Hay alguna forma de anotar una clase interna anónima en Java?

En este ejemplo, ¿podría agregar una anotación de nivel de clase a Class2?

public void method1() { add(new Class2() { public void method3() {} }); }


No. Necesitarías promocionarlo a una clase "adecuada". Todavía se puede delimitar dentro de la clase externa si es necesario, por lo que no necesita ser una clase de nivel superior, pública, o lo que sea. Pero sí necesita una definición de clase adecuada para adjuntar la anotación.


Sí, como lo menciona yegor256 , es posible, ya que JDK 8 adoptó JSR 308 (anotaciones de tipo) .

Así que ahora, cuando una anotación está decorada por @Target({ElementType.TYPE_USE}) , se puede usar para anotar una clase anónima en tiempo de ejecución. Por ejemplo:

@Target({ ElementType.TYPE_USE }) @Retention(RetentionPolicy.RUNTIME) @interface MyAnnotation { String value(); } Object o = new @MyAnnotation("Hello") Object() {};

La parte difícil es cómo acceder a la anotación:

Class<?> c = o.getClass(); AnnotatedType type = c.getAnnotatedSuperclass(); System.out.println(Arrays.toString(type.getAnnotations()));