¿Cómo se obtienen los valores establecidos dentro de una anotación?obtener el valor de la anotación?
tengo el siguiente anotación definida:
@Target(ElementType.METHOD)
@Retention(RetentionPolicy.RUNTIME)
public @interface JsonElement {
int type();
}
Y aquí es el método que utiliza en una clase POJO
@JsonElement(type=GETTER_METHOD)
public String getUsername{
........................
}
Y la clase util que utiliza la reflexión para comprobar si este método tiene la anotación JSonElement presente y para comprobar cuál es el valor de tipo.
Method methods[] = classObject.getClass().getDeclaredMethods();
JSONObject jsonObject = new JSONObject();
try {
for (int i = 0; i < methods.length; i++) {
String key = methods[i].getName();
System.out.println(key);
if (methods[i].isAnnotationPresent(JsonElement.class) && key.startsWith(GET_CHAR_SEQUENCE)) {
methods[i].getDeclaredAnnotations();
key = key.replaceFirst(GET_CHAR_SEQUENCE, "");
jsonObject.put(key, methods[i].invoke(classObject));
}
}
return jsonObject;
} catch (Exception e) {
e.printStackTrace();
return null;
}
¿Cómo puedo saber qué valor tiene type()
? Puedo encontrar si la anotación está presente, pero no puedo encontrar un método que descubra qué valor, si hay alguno, se estableció para type()
.
sí lo tengo trabajo; Gracias. ¿Es una manera de hacer que el "tipo()" sea opcional? A partir de ahora, type() debe declararse en la anotación JsonElement – jonney
Editado en la respuesta. –