复制代码代码如下:
pacote com.et59.cus.domain.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>Descrição: 反射</p>
* <p>Empresa: 点滴工作室</p>
*@versão 2.0
*
*/
classe pública ReflectUtil {
log final estático privado do Logger = Logger.getLogger (ReflectUtil.class);
@SuppressWarnings({ "rawtypes", "desmarcado" })
public static void setFieldValue (alvo do objeto, string fname, classe ftype,
Valor f do objeto) {
if (alvo == nulo
|| fnome == nulo
|| "".igual(fnome)
|| (fvalor! = nulo &&! ftype.isAssignableFrom(fvalor.getClass()))) {
retornar;
}
Classe clazz = target.getClass();
tentar {
Método método = clazz.getDeclaredMethod("set"
+ Character.toUpperCase(fname.charAt(0))
+ fname.substring(1), ftype);
if (!Modifier.isPublic(method.getModifiers())) {
método.setAccessible(true);
}
método.invoke(alvo, fvalor);
} catch (Exceção eu) {
if (log.isDebugEnabled()) {
// log.debug("me异常-------->:"+me);
}
tentar {
Campo campo = clazz.getDeclaredField(fname);
if (!Modifier.isPublic(field.getModifiers())) {
field.setAccessible (verdadeiro);
}
field.set(alvo, fvalor);
} catch (Exceção fe) {
if (log.isDebugEnabled()) {
log.debug("fe----------->"+fe);
}
}
}
}
}