JDK动态代理_JAVA_编程开发_程序员俱乐部

中国优秀的程序员网站程序员频道CXYCLUB技术地图
热搜:
更多>>
 
您所在的位置: 程序员俱乐部 > 编程开发 > JAVA > JDK动态代理

JDK动态代理

 2012/6/29 16:37:12  leeo1124  程序员俱乐部  我要评论(0)
  • 摘要:1、代理接口/***代理接口**@authorLeeo**/interfaceWork{voidtask();}2、代理接口实现类/***代理接口实现类**@authorLeeo**/classWorkImplimplementsWork{publicWorkImpl(){}publicvoidtask(){System.out.println("上班了...");}}3、自定义一个代理器
  • 标签:jdk 代理
1、代理接口
/**
 * 代理接口
 * 
 * @author Leeo
 * 
 */
interface Work {

	void task();

}


2、代理接口实现类
/**
 * 代理接口实现类
 * 
 * @author Leeo
 * 
 */
class WorkImpl implements Work {

	public WorkImpl() {

	}

	public void task() {
		System.out.println("上班了...");
	}

}


3、自定义一个代理器,实现InvocationHandler接口
/**
 * 自定义代理器
 * 
 * @author Leeo
 * 
 */
class MyInvocationHandler implements InvocationHandler {

	private Object taget;

	public MyInvocationHandler() {

	}

	public MyInvocationHandler(Object obj) {
		taget = obj;
	}

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

		System.out.println("befor...");
		Object obj = method.invoke(taget, args);
		System.out.println("after...");

		return obj;
	}

}


4、代理测试
/**
 * 动态代理测试
 * @author Leeo
 *
 */
public class ProxyTest {

	public static void main(String[] args) {

		Work target= new WorkImpl();
		InvocationHandler handler = new MyInvocationHandler(target);

		Work work = (Work) Proxy.newProxyInstance(
				target.getClass().getClassLoader(), 
				target.getClass().getInterfaces(), handler);
		work.task();
	}
}
发表评论
用户名: 匿名