使用cglib中Enhancer在运行时根据某个给定的类创建子类
public class MsProxyBuilder {
/**
* 创建obj的代理对象
* @param obj 被代理对象
* @param interfaces 代理对象实现的接口数组
* @return 返回代理对象
*/
public static Object buildProxy(Object obj, Class... interfaces) {
if (obj == null || interfaces == null || interfaces.length == 0) {
return obj;
}
Enhancer enhancer = new Enhancer();
enhancer.setSuperclass(obj.getClass());
enhancer.setInterfaces(interfaces);
MsMethodInterceptor methodInterceptor = new MsMethodInterceptor();
enhancer.setCallback(methodInterceptor);
methodInterceptor.setTarget(obj);
Object proxy = enhancer.create();
return proxy;
}
}
public interface Message_t {}
public interface IMessage {}
(IMessage) MsProxyBuilder.buildProxy(message, IMessage.class)