- 相關(guān)推薦
java利用反射實(shí)現(xiàn)動(dòng)態(tài)代理實(shí)現(xiàn)代碼
復(fù)制代碼 代碼如下:
package com.et59.cus.domain.dao.ex;
import java.lang.reflect.Field;
import java.lang.reflect.Method;
import java.lang.reflect.Modifier;
import org.apache.log4j.Logger;
/**
*
*
Title: ReflectUtil.java
*
Description: 反射
*
Company: 點(diǎn)滴工作室
* @version 2.0
*
*/
public class ReflectUtil {
private static final Logger log = Logger.getLogger(ReflectUtil.class);
@SuppressWarnings({ "rawtypes", "unchecked" })
public static void setFieldValue(Object target, String fname, Class ftype,
Object fvalue) {
if (target == null
|| fname == null
|| "".equals(fname)
|| (fvalue != null && !ftype.isAssignableFrom(fvalue.getClass()))) {
return;
}
Class clazz = target.getClass();
try {
Method method = clazz.getDeclaredMethod("set"
+ Character.toUpperCase(fname.charAt(0))
+ fname.substring(1), ftype);
if (!Modifier.isPublic(method.getModifiers())) {
method.setAccessible(true);
}
method.invoke(target, fvalue);
} catch (Exception me) {
if (log.isDebugEnabled()) {
// log.debug("me異常-------->:"+me);
}
try {
Field field = clazz.getDeclaredField(fname);
if (!Modifier.isPublic(field.getModifiers())) {
field.setAccessible(true);
}
field.set(target, fvalue);
} catch (Exception fe) {
if (log.isDebugEnabled()) {
log.debug("fe----------->"+fe);
}
}
}
}
}
【java利用反射實(shí)現(xiàn)動(dòng)態(tài)代理實(shí)現(xiàn)代碼】相關(guān)文章:
java使用動(dòng)態(tài)代理來實(shí)現(xiàn)AOP05-29
Java 隊(duì)列實(shí)現(xiàn)原理及簡單實(shí)現(xiàn)代碼09-13
關(guān)于Java動(dòng)態(tài)實(shí)現(xiàn)的方法08-23
冒泡排序的原理以及java代碼實(shí)現(xiàn)08-17
java實(shí)現(xiàn)gif動(dòng)畫效果代碼參考07-23
java構(gòu)造函數(shù)實(shí)現(xiàn)代碼示例08-23
Java實(shí)現(xiàn)反射學(xué)習(xí)函數(shù)的應(yīng)用10-22