0
点赞
收藏
分享

微信扫一扫

InvocationHandler接口与Proxy类

诗与泡面 2022-11-06 阅读 137


InvocationHandler接口与Proxy类_java

(动态代理简而言之,就是对于一个对象,在调用其方法时,能够附加的做些其他操作而产生的。)

package com.ygl.dynamicproxy;



import java.lang.reflect.InvocationHandler;

import java.lang.reflect.Method;

import java.lang.reflect.Proxy;

import java.util.List;

import java.util.Vector;



public class VectorProxy implements InvocationHandler{

private Object proxyobj;


public VectorProxy(Object obj){

this.proxyobj=obj;

}

//往里面传对象,对象实现什么接口,返回的代理就实现什么接口

public static Object factory(Object obj){

Class<?> clazz=obj.getClass();

return Proxy.newProxyInstance(clazz.getClassLoader(), clazz.getInterfaces(),new VectorProxy(obj));

}



@Override

public Object invoke(Object proxy, Method method, Object[] args)

throws Throwable {


System.out.println("before Calling"+method);

if(null!=args){

for(Object obj:args){

System.out.println(obj);

}

}


Object object=method.invoke(proxyobj, args);

System.out.println("after Calling"+method);

return object;

}

public static void main(String[] args) {

List v=(List) factory(new Vector());


v.add("New");


v.add("HH");

System.out.println(v);

}

}
//*******************************
before Callingpublic abstract boolean java.util.List.add(java.lang.Object)
New
after Callingpublic abstract boolean java.util.List.add(java.lang.Object)
before Callingpublic abstract boolean java.util.List.add(java.lang.Object)
HH
after Callingpublic abstract boolean java.util.List.add(java.lang.Object)
before Callingpublic java.lang.String java.lang.Object.toString()
after Callingpublic java.lang.String java.lang.Object.toString()
[New, HH]

举报

相关推荐

0 条评论