论坛首页 Java企业应用论坛

JAVA动态代理

浏览 2980 次
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
作者 正文
   发表时间:2012-07-24  
Thinking in java 的一个动态代理的例子
package com.liuc.test.think.chapter14;

import java.lang.reflect.InvocationHandler;
import java.lang.reflect.Method;
import java.lang.reflect.Proxy;

public class SimpleDynamicProxy {

	public static void consumer(Interface inte){
		inte.doSomething();
		inte.somethingElse("bonbo");
	}
	
	public static void main(String[] args) {
		RealObject realObject=new RealObject();
		consumer(new RealObject());
		System.out.println("=================");
		Interface proxy=(Interface) Proxy.newProxyInstance(Interface.class.getClassLoader(),
				new Class[]{Interface.class}, 
				new DynamicProxyHandler(realObject));
		consumer(proxy);
	}
}

class DynamicProxyHandler implements InvocationHandler{
	private Object proxied;
	public DynamicProxyHandler(Object proxied) {
		this.proxied=proxied;
	}

	@Override
	public Object invoke(Object proxy, Method method, Object[] args)
			throws Throwable {
		System.out.println("******proxy:"+proxy.getClass()+",method:"+method+",args:"+args);
		if (args!=null) {
			for(Object arg:args){
				System.out.println("        "+arg);
			}
		}
		return method.invoke(proxied, args);
	}
	
}


interface Interface{
	void doSomething();
	void somethingElse(String arg);
}

class RealObject implements Interface{

	@Override
	public void doSomething() {
		System.out.println("doSomething");
		
	}

	@Override
	public void somethingElse(String arg) {
		System.out.println("somethingElse:"+arg);
		
	}
	
}

   发表时间:2012-07-27  
LZ 不点评一下? 就发个代码?
0 请登录后投票
   发表时间:2012-07-27  
这也上首页
0 请登录后投票
   发表时间:2012-07-27  
lovexp2010 写道
LZ 不点评一下? 就发个代码?


昨天本来写了个来龙去脉的,结果昨天从可视化编辑器切换到BBCode编辑器的时候出问题了,索性最后就贴了代码,没写自己的思路
0 请登录后投票
   发表时间:2012-07-27  
vickatxmu 写道
这也上首页

我也很意外
0 请登录后投票
论坛首页 Java企业应用版

跳转论坛:
Global site tag (gtag.js) - Google Analytics