Wie erhalten Sie Werte innerhalb einer Annotation?Annotationswert erhalten?
Ich habe die folgende Anmerkung definiert:
@Target(ElementType.METHOD)
@Retention(RetentionPolicy.RUNTIME)
public @interface JsonElement {
int type();
}
Und hier ist die Methode, die es in einer POJO-Klasse verwendet
@JsonElement(type=GETTER_METHOD)
public String getUsername{
........................
}
Und die util-Klasse, die Reflexion verwendet, um zu überprüfen, ob diese Methode hat die JSonElement-Annotation vorhanden und um zu überprüfen, was der Typwert ist.
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;
}
Wie finde ich heraus, was type()
Wert ist? Ich kann feststellen, ob die Annotation vorhanden ist, aber ich kann keine Methode finden, die herausfindet, welcher Wert - wenn überhaupt - für type()
gesetzt wurde.
ja ich habe es funktioniert; Vielen Dank. Ist das eine Möglichkeit, "type()" optional zu machen? Ab sofort muss type() in der JsonElement-Annotation – jonney
Edited in die Antwort deklariert werden. –