JDK动态代理
Posted daxiong225
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了JDK动态代理相关的知识,希望对你有一定的参考价值。
Jdk 动态代理通过反射包提供的方式,必须要借助一个借口才能产生反射对象
1.定义接口:
public interface HelloWorld { public void sayHelloWorld(); public void sayBye(); }
2.实现接口。
public class HelloWorldImpl implements HelloWorld { @Override public void sayHelloWorld() { System.out.println("hello world....."); } @Override public void sayBye() { System.out.println("good bye....."); } }
3. JDK 动态代理要实现逻辑类,必须去实现java.lang.reflect.InvocationHandler接口, 里面定义了invoke方法。
public class JdkProxy implements InvocationHandler { //真实对象 private Object target; //返回代理对象 public Object bind(Object target) { this.target=target; return Proxy.newProxyInstance(target.getClass().getClassLoader(), target.getClass().getInterfaces(), this); } //代理方法逻辑 @Override public Object invoke(Object proxy, Method method, Object[] args) throws Throwable { System.out.println("entrance proxy method...."); System.out.println("before call real obj method....."); Object obj = method.invoke(target, args);//相当调用sayHello/bye System.out.println("after real obj....."); return obj; } }
4.测试类:
public class JdkProxyTest { public static void main(String[] args) { JdkProxy jdk = new JdkProxy(); HelloWorld hellow = (HelloWorld) jdk.bind(new HelloWorldImpl()); hellow.sayHelloWorld(); hellow.sayBye(); } } 输出: entrance proxy method.... before call real obj method..... hello world..... after real obj..... entrance proxy method.... before call real obj method..... good bye..... after real obj.....
以上是关于JDK动态代理的主要内容,如果未能解决你的问题,请参考以下文章