Os campos da página da lista exigem que possam ser classificados de acordo com as preferências do usuário, para que os campos de cada usuário correspondam a uma ordem diferente (a ordem de campo é armazenada no banco de dados). Os valores que assumimos no banco de dados são objetos, mas os valores de transferência de primeiro plano são AJAX e JSON Array, por isso enfrentamos o problema da conversão de objeto em json: 1. A ordem de campo de cada usuário não é corrigida e o código não pode ser escrito morto. 2. Obtenha os valores de acordo com a ordem de campo do usuário. Se você usar se para julgar cada valor e chamar um método diferente, existem muitas declarações condicionais. Então eu olhei para a reflexão.
Classe de modelo, o mesmo que o modelo normal
public class Pessoa {Nome da String Private; private Int Age; endereço de string privado; PhoneNumber de cordas privadas; sexo privado de cordas; public String getName () {Return Name; } // a seguir são os métodos GET e Set, omitidos. } Classe de teste
importar java.lang.reflect.invocationTargeTexception; importar java.lang.reflect.method; importar java.util.arraylist; importar java.util.list; public class Test {// init pessoa objeto. pessoa privada initperson () {pessoa p = new pessoa (); p.setName ("nome"); p.setage (21); p.setAddress ("Este é o meu addrss"); p.setphoneNumber ("12312312312"); p.setSex ("f"); retornar p; } public static void main (string [] args) lança Segurança de Segurança, NoschmethodException, ilegalargumentException, ilegalAccescessception, InvocationTargeTexception {test Test = new Test (); Pessoa p = test.initperson (); List <String> list = new ArrayList <String> (); // Adicione todo o método Get. // Não há '()' do nome dos métodos. list.add ("getName"); list.add ("getage"); list.add ("getAddress"); list.add ("getphoneNumber"); list.add ("getSex"); para (String str: list) {// Get Method Instadura. O primeiro parâmetro é o nome do método e o segundo param é o tipo de param. // Como o Java sai do mesmo método de parâmetros diferentes, apenas o nome do método e o tipo Param pode confirmar um método. Método método = p.getclass (). GetMethod (str, nova classe [0]); // O primeiro param do método Invoke é o objeto que chama esse método. // segundo param é o param. System.out.println (str + "(): get valor é" + method.invoke (p, novo objeto [0])); }}}Você também pode usar os campos obtidos pelo banco de dados para obter o valor correspondente do objeto.
O método acima precisa adicionar um nome de método GET à lista para que o valor possa ser obtido com base no nome do método GET correspondente. Se o primeiro plano for apenas um nome de propriedade, precisamos convertê -lo no método GET correspondente, o que é problemático.
public static void getValueByProperty (Pessoa P, String PropertyName) lança introspecçãoException, ilegalArgumentException, ilegalAccescessception, InvocationTargeTexception {// Get Property by the Argument PropertyName. PropertyDescriptor PD = novo PropertyDescriptor (PropertyName, P.GetClass ()); Método método = pd.getReadMethod (); Objeto o = métod.invoke (p); System.out.println ("PropertyName:" + PropertyName + "/T valor é:" + o); } public static void main (string [] args) lança segurançaexception, noschmethodException, ilegalArgumentException, ilegalaccescessception, invocaçãoTargetexception, introspecçãoException {teste test = new teste (); Pessoa p = test.initperson (); // Obtenha todas as propriedades. Campo [] campos = p.getClass (). GetDecLaredFields (); para (campo de campo: campos) {getValueByProperty (p, field.getName ()); }} Dessa forma, você pode obter diretamente o valor correspondente através do nome da propriedade aprovado.
O artigo acima Java Reflection chama dinamicamente métodos diferentes (exemplos) de acordo com diferentes nomes de métodos é todo o conteúdo que compartilho com você. Espero que possa lhe dar uma referência e espero que você possa apoiar mais o wulin.com.