リストページのフィールドは、ユーザーの設定に従ってソートできるようにする必要があるため、各ユーザーのフィールドは異なる注文に対応しています(フィールド順序はデータベースに保存されます)。データベースから取得する値はオブジェクトですが、前景転送値はAjaxとJSONアレイであるため、オブジェクトからJSON変換の問題に直面します。 2。ユーザーのフィールド注文に従って値を取得します。各値を判断してから異なる方法を呼び出す場合は、条件付きステートメントが多すぎます。それから私は反射を見ました。
モデルクラス、通常のモデルと同じ
パブリッククラスの人{プライベート文字列名;プライベートインクエイジ;プライベート文字列アドレス。プライベートストリングフォネンバル;プライベートストリングセックス; public string getName(){return name; } //次のものは、省略されているGet and Setメソッドです。 } テストクラス
Import java.lang.reflect.invocationTargetException; Import Java.lang.Reflect.Method; Import java.util.arraylist; Import java.util.list; public class test {// init person object。 private person initperson(){person p = new person(); P.SetName( "name"); P.Setage(21); p.setAddress( "これは私のaddrss"); P.SetPhonEnumber( "12312312312"); P.SetSex( "F"); pを返します。 } public static void main(String [] args)Sthrows seculityException、nosuchmethodexception、Illegalargumentexception、Illegalaccessexception、rikocationTargetException {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"); for(string str:list){//メソッドインスタンスを取得します。最初のPARAMはメソッド名で、2番目のPARAMはPARAMタイプです。 // Javaは異なるパラマの同じ方法を終了するため、メソッド名とPARAMタイプのみがメソッドを確認できます。メソッドメソッド= p.getClass()。getMethod(str、new class [0]); //最初にInvokeメソッドのPARAMは、このメソッドを呼び出すオブジェクトです。 // 2番目のPARAMはPARAMです。 System.out.println(str + "():get value is" + method.invoke(p、new object [0])); }}}データベースで取得したフィールドを使用して、対応する値をオブジェクトから取得することもできます。
上記の方法では、対応するGETメソッド名に基づいて値を取得できるように、getメソッド名をリストに追加する必要があります。フォアグラウンドが単なるプロパティ名である場合、それを対応するGETメソッドに変換する必要があります。これは面倒です。
public static void getValueByProperty(Person P、String PropertyName)SlopectionException、IllegalArgumentException、Illegalaccessexception、InvocationTargetException {//引数PropertyNameでプロパティを取得します。 PropertyDescriptor PD = new PropertyDescriptor(propertyName、p.getClass());メソッドメソッド= pd.getReadMethod();オブジェクトo = method.invoke(p); System.out.println( "propertyName:" + propertyName + "/t値IS:" + o); } public static void main(String [] args)Sthrow SeculityException、nosuchmethodexception、Illegalargumentexception、Illegalaccessexception、rikocationTargetException、IntroSpectionException {test test = new Test();人P = test.initperson(); //すべてのプロパティを取得します。 field [] fields = p.getClass()。getDeclaredFields(); for(field:fields){getValueByProperty(P、field.getName()); }} このようにして、合格したPropertyNameを介して対応する値を直接取得できます。
上記の記事Java Reflectionは、さまざまなメソッド名に従って異なる方法(例)を動的に呼び出します。私があなたと共有するすべてのコンテンツです。私はそれがあなたに参照を与えることができることを願っています、そしてあなたがwulin.comをもっとサポートできることを願っています。