Java反射アプリケーション-オブジェクトを巡回する属性と値


本論文はJava反射の一般的なケースです。一般的なケースは、オブジェクトには、各属性と値をもう一つのMapまたはArayに生成する必要があります。この時は反射します。多くは言ってはいけません。
public static ArrayList getObjNameAndValueList(Object obj) {
    try {
        if (obj == null) {
            return null;
        }
        Field[] fields = obj.getClass().getDeclaredFields();
        if (fields== null || fields.length ==0) {
            return null;
        }
        ArrayList nameValuePairs = new ArrayList<>();
        for (Field f:fields) {
            if (f.getName() != null && getFieldValueByName(f.getName(),obj)!=null) {
                nameValuePairs.add(new BasicNameValuePair(f.getName(),String.valueOf(getFieldValueByName(f.getName(),obj))));
            }
        }
        return nameValuePairs;
    }catch (Exception e) {
        e.printStackTrace();
        return null;
    }
}
Obj.get Class()の方法でクラスを獲得し、そのすべての声明の属性を取得し、各属性はFiledのgetName方式で取得できます。これは最も一般的な使い方です。このように、このクラスの各属性値を得ることができます。
 
private static Object getFieldValueByName(String filedName, Object o) {
    try {
       String firstLetter = filedName.substring(0,1).toUpperCase();
       String getter = "get"+firstLetter+filedName.substring(1);
        Method method =o.getClass().getMethod(getter,new Class[]{});
        Object value = method.invoke(o,new Object[]{});
        return value;
    }catch (Exception e) {
        e.printStackTrace();
        return null;
    }
}
上記の方法は、属性名に応じて、対応するgetメソッドをつづり合わせて、属性の最初の文字を大文字にして、getXxx()方法につづり合わせて、Classのget Method()を通じてMethodオブジェクトを取得し、Method反射によってこのフィールドの値を取得します。これは一番よく使われている使い方です。皆さんの助けになりたいです。足りないところがあれば、メッセージを残してください。技術は多くの交流が必要です。