复制番号代番号次のように:
パッケージ com.et59.cus.domain.dao.ex;
java.lang.reflect.Fieldをインポートします。
java.lang.reflect.Methodをインポートします。
java.lang.reflect.Modifierをインポートします。
org.apache.log4j.Logger をインポートします。
/**
*
* <p>タイトル: ReflectUtil.java</p>
* <p>説明: 反射</p>
* <p>会社名: 点滴工作室</p>
* @バージョン2.0
*
*/
パブリック クラス ReflectUtil {
プライベート静的最終ロガーログ = Logger.getLogger(ReflectUtil.class);
@SuppressWarnings({ "rawtypes", "未チェック" })
public static void setFieldValue(Object target, String fname, Class ftype,
オブジェクト fvalue) {
if (ターゲット == null
|| fname == null
|| "".equals(fname)
|| (fvalue != null && !ftype.isAssignableFrom(fvalue.getClass()))) {
戻る;
}
クラス clazz = target.getClass();
試す {
メソッド method = clazz.getDeclaredMethod("set"
+ Character.toUpperCase(fname.charAt(0))
+ fname.substring(1)、ftype);
if (!Modifier.isPublic(method.getModifiers())) {
メソッド.setAccessible(true);
}
メソッド.invoke(ターゲット, fvalue);
} catch (例外は私) {
if (log.isDebugEnabled()) {
// log.debug("me异常-------->:"+me);
}
試す {
フィールド field = clazz.getDeclaredField(fname);
if (!Modifier.isPublic(field.getModifiers())) {
フィールド.setAccessible(true);
}
field.set(ターゲット, fvalue);
} catch (例外 fe) {
if (log.isDebugEnabled()) {
log.debug("fe---------->"+fe);
}
}
}
}
}