Ich frage mich, ob es eine Möglichkeit gibt, die Annotationsinformationen einer Klasse zur Laufzeit zu bekommen? Da ich die Eigenschaften erhalten möchte, die annotiert sind.die Annotationsinformationen zur Laufzeit abrufen
Beispiel:
class TestMain {
@Field(
store = Store.NO)
private String name;
private String password;
@Field(
store = Store.YES)
private int age;
//..........getter and setter
}
Die Anmerkungen stammen aus dem Hibernate-Suche, und jetzt, was ich will, ist erhalten die Eigenschaft des „TestMain“ wird als ‚Feld‘ Anmerkungen versehen (im Beispiel: Sie sind [Name, Alter]), und das ist 'gespeichert (Speicher = store.yes)' (im Beispiel sind sie [Alter]) zur Laufzeit.
Irgendwelche Ideen?
AKTUALISIERUNG:
public class FieldUtil {
public static List<String> getAllFieldsByClass(Class<?> clazz) {
Field[] fields = clazz.getDeclaredFields();
ArrayList<String> fieldList = new ArrayList<String>();
ArrayList<String> storedList=new ArrayList<String>();
String tmp;
for (int i = 0; i < fields.length; i++) {
Field fi = fields[i];
tmp = fi.getName();
if (tmp.equalsIgnoreCase("serialVersionUID"))
continue;
if (fi.isAnnotationPresent(org.hibernate.search.annotations.Field.class)) {
//it is a "field",add it to list.
fieldList.add(tmp);
//make sure if it is stored also
Annotation[] ans = fi.getAnnotations();
for (Annotation an : ans) {
//here,how to get the detail annotation information
//I print the value of an,it is something like this:
//@org.hibernate.search.annotations.Field(termVector=NO, index=UN_TOKENIZED, store=NO, name=, [email protected](value=1.0), a[email protected](impl=void, definition=), [email protected](impl=void, params=[]))
//how to get the parameter value of this an? using the string method?split?
}
}
}
return fieldList;
}
}
Sie erhalten wahrscheinlich schneller eine Antwort, wenn Sie ein Tag mit der von Ihnen verwendeten Programmiersprache hinzufügen. –
Danke, ich füge es hinzu – hguser