suppresswarnings sirven sirve que para las introspección ejemplo crear categorias anotaciones annotation java reflection aspectj

java - introspección - para que sirven las anotaciones



Obtener el valor de un parámetro de una anotación en Java (2)

Así que tengo un código:

@Path("/foo") public class Hello { @GET @Produces("text/html") public String getHtml(@Context Request request, @Context HttpServletRequest requestss){ ... }

Estoy usando AspectJ para capturar todas las llamadas al método getHtml . Me gustaría que los parámetros pasen a @Produces y a @Path en mi consejo, es decir, "/foo" y "text/html" en este caso. ¿Cómo puedo hacerlo utilizando la reflexión?


La anotación se basa en la lógica de la interfaz. Debe llamar al miembro válido de la misma para recuperar el valor.

Definición

public @interface Produces { String type(); }

Lee el ejemplo

for (Method m: SomeClass.class.getMethods() { Produces produce = m.getAnnotation(Produces.class); if (produce != null) System.out.println(produce.type()); }

Sí. Debe utilizar la reflexión para acceder a la definición del método. Puede usar Class#MgetMethods() para obtener la definición de método

Para el objeto al que llama obj.getClass() para obtener la definición de clase.


Para obtener el valor del parámetro @Path :

String path = Hello.class.getAnnotation(Path.class).value();

Del mismo modo, una vez que haya mantenido el Method getHtml

Method m = Hello.class.getMethod("getHtml", ..); String mime = m.getAnnotation(Produces.class).value;