复代码代码如下:
패키지 com.et59.cus.domain.dao.ex;
import java.lang.reflect.Field;
import java.lang.reflect.Method;
import 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", "unchecked" })
public static void setFieldValue(객체 대상, 문자열 fname, 클래스 ftype,
객체 f값) {
if (대상 == null
|| f이름 == null
|| "".equals(f이름)
|| (fvalue != null && !ftype.isAssignableFrom(fvalue.getClass()))) {
반품;
}
클래스 clazz = target.getClass();
노력하다 {
메소드 메소드 = clazz.getDeclaredMethod("set"
+ Character.toUpperCase(fname.charAt(0))
+ fname.substring(1), ftype);
if (!Modifier.isPublic(method.getModifiers())) {
메소드.setAccessible(true);
}
method.invoke(대상, fvalue);
} 잡기 (나만 예외) {
if (log.isDebugEnabled()) {
// log.debug("me异常--------->:"+me);
}
노력하다 {
필드 field = clazz.getDeclaredField(fname);
if (!Modifier.isPublic(field.getModifiers())) {
field.setAccessible(true);
}
field.set(대상, fvalue);
} 잡기 (예외 fe) {
if (log.isDebugEnabled()) {
log.debug("fe------------>"+fe);
}
}
}
}
}