Поля страницы списка требуют, чтобы они могли отсортировать в соответствии с предпочтениями пользователя, поэтому поля каждого пользователя соответствуют другому порядку (порядок поля хранится в базе данных). Значения, которые мы принимаем из базы данных, являются объектами, но значения передачи переднего плана-это массив AJAX и JSON, поэтому мы сталкиваемся с проблемой преобразования объекта в JSON: 1. Порядок поля каждого пользователя не исправлен, и код не может быть записан мертвым. 2. Получите значения в соответствии с полевым заказом пользователя. Если вы используете, если судить каждое значение, а затем вызовите другой метод, их слишком много, если условные утверждения. Затем я посмотрел на отражение.
Модельный класс, такой же, как обычная модель
Public Class Person {private String name; частный int возраст; частный строковый адрес; частное строковое phonnercumber; частный строковый секс; public String getName () {return name; } // Ниже приведены методы GET и SET, опущенные. } Тестовый класс
Импорт java.lang.reflect.invocationTargetException; импорт java.lang.reflect.method; import java.util.arraylist; import java.util.list; тест открытого класса {// init Person объект. частное лицо initperson () {person p = new Person (); p.setname ("имя"); P.Setage (21); P.SetAddress («Это мой аддрс»); p.setphonenumber ("12312312312"); p.setsex ("f"); возврат P; } public static void main (string [] args) выбрасывает SecurityException, nosuchmethodexception, allodalargumentException, allodalaccessexception, vocociationTargetException {test test = new Test (); Человек p = test.initperson (); List <string> list = new ArrayList <string> (); // Добавить все метод получить. // нет «()» методов названия. list.add ("GetName"); list.add ("getage"); list.add ("getAddress"); list.add ("getPhoneNumber"); list.add ("getSex"); для (String Str: List) {// получить экземпляр метода. Первым парамером является имя метода, а второй парамет - это тип Param. // Поскольку Java выходит из одного и того же метода разных параметров, только имя метода и тип параметра может подтвердить метод. Метод метода = p.getClass (). GetMethod (str, новый класс [0]); // Первый параметр «Метод invoke» - это объект, который вызывает этот метод. // Второй парамет - это парамет. System.out.println (str + "(): получить значение" + method.invoke (p, новый объект [0])); }}}Вы также можете использовать поля, полученные базой данных для получения соответствующего значения из объекта.
Приведенный выше метод должен добавить имя метода GET в список, чтобы значение можно было получить на основе соответствующего имени метода GET. Если передний план является просто названием свойства, то мы должны преобразовать его в соответствующий метод GET, который неприятен.
Public Static void getValuebyProperty (Person P, String Propertyme) бросает IntroscectionException, allodalargumentException, allodalaccessexception, vococationTargetException {// Получить свойство с помощью PropertyName. PropertyDescriptor PD = New PropertyDescriptor (PropertyName, P.GetClass ()); Method Method = Pd.getReadMethod (); Объект o = method.invoke (p); System.out.println ("PropertyName:" + PropertyName + "/T значение:" + O); } public static void main (string [] args) бросает SecurityException, nosuchmethodexception, allectalargumentException, allodalaccessexception, vococationTargetException, IntroscectionException {test test = new Test (); Человек p = test.initperson (); // Получить все свойства. Field [] fields = p.getClass (). GetDeclaredFields (); для (поле поле: Fields) {getValuebyProperty (p, field.getName ()); }} Таким образом, вы можете напрямую получить соответствующее значение через имя PropertyName.
Приведенная выше статья Java Reflection Динамически вызывает различные методы (примеры) в соответствии с различными именами методов - это все контент, которым я делюсь с вами. Я надеюсь, что это может дать вам ссылку, и я надеюсь, что вы сможете поддержать Wulin.com больше.