Die Felder der Listenseite erfordern, dass sie nach den Einstellungen des Benutzers sortiert werden können, sodass die Felder jedes Benutzers einer anderen Reihenfolge entsprechen (die Feldreihenfolge wird in der Datenbank gespeichert). Die Werte, die wir aus der Datenbank einnehmen, sind Objekte, aber die Vordergrundübertragungswerte sind AJAX und JSON-Array. Daher stehen wir vor dem Problem der Objekt-zu-JSON-Konvertierung: 1. Die Feldreihenfolge jedes Benutzers ist nicht behoben und der Code kann nicht tot geschrieben werden. 2. Erhalten Sie die Werte gemäß der Feldbestellung des Benutzers. Wenn Sie verwenden, ob Sie jeden Wert beurteilen und dann eine andere Methode aufrufen, gibt es zu viele, wenn es bedingte Aussagen. Dann sah ich mir das Spiegelbild an.
Modellklasse, das gleiche wie normales Modell
public class Person {privater Zeichenfolge Name; privates int Alter; private String -Adresse; private String PhoneNumber; privater String Sex; public String getName () {return name; } // Folgendes sind die GET -and -Set -Methoden weggelassen. } Testklasse
Importieren Sie java.lang.reflect.invocationTargetException; import Java.lang.reflect.Method; Import Java.util.ArrayList; Importieren Sie java.util.list; public class -Test {// Init Person -Objekt. private Person initperson () {Person p = new Person (); P.SetName ("Name"); P.Setage (21); P.SetAddress ("Dies ist mein ADDRSS"); P.SetphonNumber ("12312312312"); P.SetSex ("f"); Rückkehr p; } public static void main (String [] args) löst SicherheitException, NoSuchMethodException, illegalArgumentException, illegale Accessexception, InvocationTargetException {Test test = new Test () aus. Person p = test.initperson (); Liste <String> list = new ArrayList <string> (); // Fügen Sie alle Get -Methoden hinzu. // Es gibt kein '()' von Methodennamen. list.add ("getName"); list.add ("Getage"); list.add ("getAddress"); list.add ("GetPhonNumber"); list.add ("getSex"); für (string str: list) {// Methode Instanz abrufen. Der erste Param ist der Methodenname und der zweite Param ist Paramtyp. // Da Java die gleiche Methode verschiedener Parameter verlässt, kann nur Methodenname und Parametyp eine Methode bestätigen. Methodenmethode = p.getClass (). GetMethod (str, neue Klasse [0]); // Erster Paramet für Invoke ist das Objekt, das diese Methode aufruft. // Zweiter Param ist der Param. System.out.println (str + "(): Wert ist" + method.invoke (p, neues Objekt [0])); }}}Sie können auch die von der Datenbank erhaltenen Felder verwenden, um den entsprechenden Wert aus dem Objekt zu erhalten.
Die obige Methode muss der Liste einen GET -Methodennamen hinzufügen, damit der Wert basierend auf dem entsprechenden GET -Methodennamen erhalten werden kann. Wenn der Vordergrund nur ein Eigenschaftsname ist, müssen wir ihn in die entsprechende GET -Methode umwandeln, was problematisch ist.
public static void GetValuebyProperty (Person P, String PropertyName) löst introspectionException, illegalArgumentException, illegalAccessexception, InvocationTargetException {// Eigentum durch den Argument -EigentumName erhalten. PropertyDescriptor pd = new PropertyDescriptor (PropertyName, P.GetClass ()); Methodenmethode = pd.getReadMethod (); Objekt o = methode.invoke (p); System.out.println ("PropertyName:" + PropertyName + "/t -Wert ist:" + o); } public static void main (String [] args) löst SicherheitException, NoSuchMethodException, IllegalArgumentException, illegalAccessexception, InvocationTargetException, IntrospectiveException {Test Test = New Test (); Person p = test.initperson (); // Erhalten Sie alle Eigenschaften. Field [] fields = p.getClass (). GetDeclaredfields (); für (Feldfeld: Felder) {GetValuebyProperty (p, field.getName ()); }} Auf diese Weise können Sie den entsprechenden Wert direkt über den übergebenen Eigenschaftsnamen erhalten.
Der obige Artikel Java Reflection ruft dynamisch unterschiedliche Methoden (Beispiele) nach verschiedenen Methodamen auf, und der Inhalt, den ich mit Ihnen teile. Ich hoffe, es kann Ihnen eine Referenz geben und ich hoffe, Sie können Wulin.com mehr unterstützen.