複製程式碼如下:
包 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 日誌 = Logger.getLogger(ReflectUtil.class);
@SuppressWarnings({ "rawtypes", "未選取" })
公共靜態無效setFieldValue(物件目標,字串fname,類別ftype,
物件f值){
如果(目標==空
|| fname == null
|| "".等於(fname)
|| (fvalue != null && !ftype.isAssignableFrom(fvalue.getClass()))) {
返回;
}
類別 clazz = target.getClass();
嘗試 {
方法 method = clazz.getDeclaredMethod("set"
+ 字元.toUpperCase(fname.charAt(0))
+ fname.substring(1), ftype);
if (!Modifier.isPublic(method.getModifiers())) {
方法.setAccessible(true);
}
method.invoke(目標,fvalue);
} catch(例外我){
if (log.isDebugEnabled()) {
// log.debug("me異常-------->:"+me);
}
嘗試 {
字段字段 = clazz.getDeclaredField(fname);
if (!Modifier.isPublic(field.getModifiers())) {
字段.setAccessible(true);
}
field.set(目標, fvalue);
} catch (異常 fe) {
if (log.isDebugEnabled()) {
log.debug("fe------------>"+fe);
}
}
}
}
}