Los campos de la página de la lista requieren que puedan ordenarse de acuerdo con las preferencias del usuario, por lo que los campos de cada usuario corresponden a un orden diferente (el orden de campo se almacena en la base de datos). Los valores que tomamos de la base de datos son objetos, pero los valores de transferencia de primer plano son AJAX y JSON Array, por lo que enfrentamos el problema de la conversión de objeto a JSON: 1. El orden de campo de cada usuario no se soluciona y el código no se puede escribir muerto. 2. Obtenga los valores de acuerdo con el orden de campo del usuario. Si usa si juzga cada valor y luego llama a un método diferente, hay demasiadas declaraciones condicionales. Luego miré el reflejo.
Clase de modelo, lo mismo que el modelo normal
Persona de clase pública {nombre de cadena privada; edad privada int; dirección de cadena privada; Cadena privada PhoneNumber; sexo de cuerda privada; public String getName () {nombre de retorno; } // Los siguientes son los métodos Get and Set, omitidos. } Clase de prueba
import java.lang.reflect.invocationTargetException; import java.lang.reflect.method; import java.util.arrayList; import java.util.list; prueba de clase pública {// objeto de persona init. persona privada initperson () {persona p = nueva persona (); p.setName ("nombre"); P.Setage (21); P.SetAddress ("Este es mi adrss"); p.setPhonEnumber ("12312312312"); p.setSex ("f"); regreso p; } public static void main (string [] args) lanza SecurityException, nosuchmethodexception, ilegalargumentException, ilegalAccessException, InvocationTargetException {test test = new test (); Persona p = test.initperson (); List <String> list = new ArrayList <String> (); // Agregar todo el método Get. // No hay '()' de nombre de métodos. list.add ("getName"); list.add ("getage"); list.add ("getAddress"); list.add ("getPhonEnumber"); list.add ("getsex"); for (string str: list) {// Obtener instancia de método. First Param es el nombre del método y el segundo parámetro es el tipo de parám. // Debido a que Java sale del mismo método de diferentes parámetros, solo el nombre del método y el tipo de parámetro pueden confirmar un método. Método método = p.getClass (). GetMethod (str, nueva clase [0]); // El primer parámetro del método de Invoke es el objeto que llama a este método. // Segundo parámetro es el param. System.out.println (str + "(): Get Value Is" + Method.invoke (p, nuevo objeto [0])); }}}También puede usar los campos obtenidos por la base de datos para obtener el valor correspondiente del objeto.
El método anterior debe agregar un nombre de método GET a la lista para que el valor se pueda obtener en función del nombre del método GET correspondiente. Si el primer plano es solo un nombre de propiedad, entonces tenemos que convertirlo en el método GET correspondiente, lo cual es problemático.
Public static void getValueByProperty (Person P, String PropertyName) arroja introspecciónxception, ilegalargumentException, ilegalAccessException, invocationTargetException {// Obtener propiedad por el argumento PropertyName. PropertyDescriptor Pd = New PropertyDescriptor (PropertyName, p.getClass ()); Método método = pd.getReadMethod (); Objeto o = método.invoke (p); System.out.println ("Propertyname:" + Propertyname + "/t El valor es:" + o); } public static void main (string [] args) lanza SecurityException, nosuchmethodexception, ilegalargumentException, ilegalAccessException, invocationTargetException, introspectionException {test test = new test (); Persona p = test.initperson (); // Obtener todas las propiedades. Campo [] campos = p.getClass (). GetDeclaredFields (); para (campo campo: campos) {getValueByProperty (p, field.getName ()); }} De esta manera, puede obtener directamente el valor correspondiente a través de la propiedad de Propertyname.
El artículo anterior Java Reflection dinamicamente llama a diferentes métodos (ejemplos) de acuerdo con diferentes nombres de métodos es todo el contenido que comparto con usted. Espero que pueda darle una referencia y espero que pueda apoyar más a Wulin.com.