Les champs de la page de liste nécessitent qu'ils puissent être triés en fonction des préférences de l'utilisateur, de sorte que les champs de chaque utilisateur correspondent à un ordre différent (l'ordre de champ est stocké dans la base de données). Les valeurs que nous prenons de la base de données sont des objets, mais les valeurs de transfert de premier plan sont un tableau ajax et json, nous sommes donc confrontés au problème de la conversion objet-json: 1. L'ordre de champ de chaque utilisateur n'est pas corrigé et le code ne peut pas être écrit mort. 2. Obtenez les valeurs en fonction de l'ordre sur le terrain de l'utilisateur. Si vous utilisez si pour juger de chaque valeur, puis appelez une méthode différente, il y a trop d'instructions si conditionnelles. Puis j'ai regardé la réflexion.
Classe de modèle, comme le modèle normal
Personne de classe publique {nom de chaîne privée; Âge privé; adresse de chaîne privée; Phonenumber à chaîne privée; Sexe à cordes privées; public String getName () {Nom de retour; } // Voici les méthodes Get and Set, omises. } Classe de test
Importer java.lang.reflect.invocationtargetException; import java.lang.reflect.method; import java.util.arraylist; import java.util.list; public class test {// init person object. Person privé InitPerson () {Person P = new Person (); p.setName ("nom"); P.Setage (21); P.SetAddress ("Ceci est mon addrss"); P.SetphonEnumber ("12312312312"); P.SetSEX ("F"); Retour p; } public static void main (String [] args) lève SecurityException, NosuchMethodexception, illégalArgumentException, illégalaccessException, invocationTargetException {test test = new test (); Personne p = test.InitPerson (); List <string> list = new ArrayList <string> (); // Ajouter toute la méthode Get. // il n'y a pas de nom de méthodes '()'. list.add ("getName"); list.add ("Getage"); list.add ("getAddress"); list.add ("getPhonenumber"); list.add ("getSEX"); pour (String Str: List) {// Get Method Instance. Le premier param est le nom de la méthode et le deuxième param est le type de param. // Parce que Java quitte la même méthode de différents paramètres, seul le nom de la méthode et le type de paramètre peuvent confirmer une méthode. Méthode méthode = p.getClass (). GetMethod (str, new class [0]); // Le premier paramètre de la méthode invoquée est l'objet qui appelle cette méthode. // Le deuxième param est le param. System.out.println (str + "(): la valeur Get est" + méthode.invoke (p, nouvel objet [0])); }}}Vous pouvez également utiliser les champs obtenus par la base de données pour obtenir la valeur correspondante de l'objet.
La méthode ci-dessus doit ajouter un nom de méthode GET à la liste afin que la valeur puisse être obtenue en fonction du nom de méthode GET correspondant. Si le premier plan n'est qu'un nom de propriété, nous devons le convertir en méthode Get correspondante, ce qui est gênant.
public static void getValueByProperty (Person P, String PropertyName) lève IntrospectionException, illégalArgumentException, illégalAccessException, invocationTargetException {// obtenir la propriété par l'argument PropertyName. PropertyDescriptor pd = new PropertyDescriptor (PropertyName, p.getClass ()); Méthode méthode = pd.getReadMethod (); Objet o = méthode.invoke (p); System.out.println ("PropertyName:" + PropertyName + "/ t La valeur est:" + o); } public static void main (String [] args) lève la sécurité de sécurité, nosuchMethodexception, illégalargumentException, illégalaccessException, invocationTargetException, introspectionException {test test = new test (); Personne p = test.InitPerson (); // Obtenez toutes les propriétés. Champ [] champs = p.getClass (). GetDeclaredFields (); pour (champ de champ: champs) {getValueByProperty (p, field.getName ()); }} De cette façon, vous pouvez obtenir directement la valeur correspondante via le nom de propriété passé.
L'article ci-dessus Java Reflection appelle dynamiquement différentes méthodes (exemples) selon différents noms de méthodes est tout le contenu que je partage avec vous. J'espère que cela pourra vous donner une référence et j'espère que vous pourrez soutenir Wulin.com plus.