Cómo anotar un bloque de código en Java

¿Es posible anotar un bloque de código? Por ejemplo, para el ciclo o simplemente corchetes? ¿Si es así, cómo?

Primero.java

package An; import An.ForCycle; class First { public static void main(String[] args) { First f = new First(); } public First () { @ForCycle { // error: illegal start of type { int k; } @ForCycle for (int i = 0; i < 5; i++) { // similar error (illegal start...) System.out.println(i); } } } 

ForCycle.java

 package An; import java.lang.annotation.Documented; import java.lang.annotation.ElementType; import java.lang.annotation.Retention; import java.lang.annotation.RetentionPolicy; import java.lang.annotation.Target; @Retention(RetentionPolicy.SOURCE) public @interface ForCycle {} 

Según http://www.javacodegeeks.com/2012/11/java-annotations-tutorial-with-custom-annotation.html

@Target: indica los tipos de elementos de progtwig a los que se aplica un tipo de anotación. Algunos valores posibles son TIPO, MÉTODO, CONSTRUCTOR, CAMPO, etc. Si la meta-anotación de Target no está presente, se puede usar la anotación en cualquier elemento del progtwig.

Cualquier elemento del progtwig (supongo) significa también bloque, ¿no es así? Entonces, ¿por qué no puedo anotar bloque o para ? ¿Qué me estoy perdiendo?

Gracias por la ayuda

Significa “cualquier elemento del progtwig fuera de los que ya están en la lista “.

Para la última palabra sobre el tema, uno simplemente se refiere a la especificación del lenguaje Java :

Las anotaciones se pueden usar como modificadores en cualquier statement, ya sea paquete, clase (incluidas las enumeraciones), interfaz (incluidos los tipos de anotación), campo, método, parámetro formal, constructor o variable local.

Las anotaciones también se pueden utilizar en constantes de enumeración.

No, no puedes hacer esto. En realidad, usted ya ha respondido a su pregunta. Hay una lista cerrada de objectives donde se puede usar la anotación: {TYPE, FIELD, METHOD, PARAMETER, CONSTRUCTOR, LOCAL_VARIABLE} . Como puedes ver, no existe el “bloque”. ¿Por qué? Probablemente porque la anotación se debe adjuntar a algo nombrado, por ejemplo, método, campo, clase, etc.

De hecho, piensa en cómo se puede usar el uso de la anotación? Se accede a las anotaciones utilizando la API de reflexión. Puede solicitar anotaciones de método o campo específico. ¿Cómo esperas solicitar la anotación de bloque?

Y el último aviso. Las anotaciones se pueden utilizar en tiempo de ejecución o en tiempo de comstackción. Las anotaciones disponibles en tiempo de comstackción son utilizadas por los comstackdores, los IDE y los procesadores de anotaciones para generar advertencias, errores o códigos adicionales. IntelliJ como un IDE conocido con un montón de funciones de análisis de código estático admite las denominadas “anotaciones de bloque” que sintácticamente son comentarios en línea regulares pero son tratados por IDE como anotaciones que pueden suprimir algunas advertencias.

“Cualquier elemento del progtwig” significa aquí “de la lista especificada” connotación, es decir, “el valor predeterminado es TODOS los valores”, dice esta statement.

En general, esto es imposible porque solo el comstackdor trabaja con bloques de código y procesa todos los bloques en códigos de bytes mezclados de forma compleja. Simplemente no hay uso posible para dicha anotación, excepto las pautas de comstackción