复制代码代码如下:
paquete com.et59.cus.dominio.dao.ex;
importar java.lang.reflect.Field;
importar java.lang.reflect.Method;
importar java.lang.reflect.Modifier;
importar org.apache.log4j.Logger;
/**
*
* <p>Título: ReflectUtil.java</p>
* <p>Descripción: 反射</p>
* <p>Empresa: 点滴工作室</p>
* @versión 2.0
*
*/
clase pública ReflectUtil {
registro final estático privado del registrador = Logger.getLogger(ReflectUtil.class);
@SuppressWarnings({ "rawtypes", "sin marcar" })
setFieldValue público estático vacío (objeto objetivo, nombre de cadena, tipo de clase,
valor f del objeto) {
si (objetivo == nulo
|| nombref == nulo
|| "".es igual a (nombref)
|| (fvalue! = nulo &&! ftype.isAssignableFrom(fvalue.getClass()))) {
devolver;
}
Clase clazz = target.getClass();
intentar {
Método método = clazz.getDeclaredMethod("conjunto"
+ Carácter.aUpperCase(fname.charAt(0))
+ fname.substring(1), ftype);
if (!Modifier.isPublic(method.getModifiers())) {
método.setAccessible(verdadero);
}
método.invoke(objetivo, valorf);
} atrapar (Excepción mía) {
si (log.isDebugEnabled()) {
// log.debug("yo异常-------->:"+yo);
}
intentar {
Campo campo = clazz.getDeclaredField(fname);
si (!Modifier.isPublic(field.getModifiers())) {
campo.setAccessible(verdadero);
}
campo.set(objetivo, valorf);
} captura (excepción fe) {
si (log.isDebugEnabled()) {
log.debug("fe----------->"+fe);
}
}
}
}
}