反射によるjavaクラスのプロパティの取得と値の割り当て
3545 ワード
自分で書く方法は、Objectタイプのオブジェクトを入力してカスタムjavaクラスに値を割り当て、値を返してタイプ変換します.注意タイプ変換.クラス反射によってクラスフィールドの配列を取得し、属性名を取得し、属性タイプを取得することを考えています.異なるタイプのjavaクラス属性に値を割り当てるループ比較
文章の内容は私がネットの各方面の知識の学習を通じて、理解して、総括して、編集します.学習にのみ使用します.コピーネットワークと同じコードがあり、テストの実行に合格したコードの正確性のみを宣言します.
public Object getProperty(Object obj)throws IllegalAccessException{
//
Field[] field = obj.getClass().getDeclaredFields();
for (int i = 0; i < field.length; i++) {
Field f = field[i];
f.setAccessible(true);
// key:
String key = f.getName();
//
String name = field[i].getName();
name = name.substring(0, 1).toUpperCase() + name.substring(1);
//
String type = field[i].getGenericType().toString();
Method method = null;
try {
try {
if(type.equals("class java.lang.String")){
method = obj.getClass().getMethod("set"+name,String.class);
// String
method.invoke(obj, "");
}
if(type.equals("class java.lang.Integer")){
method = obj.getClass().getMethod("set"+name,Integer.class);
// Integer 1
method.invoke(obj, 1);
}
if(type.equals("int")){
method = obj.getClass().getMethod("set"+name,int.class);
// int
method.invoke(obj, 2);
}
// ,
} catch (InvocationTargetException e) {
e.printStackTrace();
}
} catch (NoSuchMethodException e) {
e.printStackTrace();
}
}
return obj;
}
文章の内容は私がネットの各方面の知識の学習を通じて、理解して、総括して、編集します.学習にのみ使用します.コピーネットワークと同じコードがあり、テストの実行に合格したコードの正確性のみを宣言します.