`
xiaobian
  • 浏览: 579733 次
  • 来自: 北京
社区版块
存档分类
最新评论

Java动态代理实现。

    博客分类:
  • Java
阅读更多
HelloWorld.java 接口文件
public interface HelloWorld {
	public void sayHello();
}



HelloWorldImpl.java 接口的一种实现
public class HelloWorldImpl implements HelloWorld {

	public void sayHello() {
		// TODO Auto-generated method stub
		System.out.println("Hello World");
	}

}

HelloWorldHandler.java 接口的代理文件
import java.lang.reflect.InvocationHandler;
import java.lang.reflect.Method;
import java.lang.reflect.Proxy;

public class HelloWorldHandler implements InvocationHandler {
	private Object obj = null;

	public HelloWorldHandler(Object obj) {
		this.obj = obj;
	}

	public Object invoke(Object proxy, Method method, Object[] args)
			throws Throwable {
		// TODO Auto-generated method stub
		Object result = null;
		before();
		result = method.invoke(obj, args);
		after();
		return result;
	}

	public Object bind() {
		return Proxy.newProxyInstance(obj.getClass().getClassLoader(), obj
				.getClass().getInterfaces(), this);
	}

	public void before() {
		System.out.println("方法执行之前");
	}

	public void after() {
		System.out.println("方法执行之后");
	}

}


测试
	public static void main(String[] args) {
		HelloWorldHandler handler = new HelloWorldHandler(new HelloWorldImpl());
		HelloWorld proxy = (HelloWorld) handler.bind();
		proxy.sayHello();
	}
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics