注意:JDK的动态代理依靠接口实现 实例如下: package com.jdkproxy; /** * 1、定义一个图书接口 */ public interface Book { //添加图书方法 public void addBook(String s); } 2、定义一个类实现了Book接口 package com.jdkproxy; public class BookImpl implements Book{ @Override public void addBook(String s) { System.out.println(s+"增加图书的方法......."); } } 3、定义一个动态代理类 package com.jdkproxy; import java.lang.reflect.InvocationHandler; import java.lang.reflect.Method; import java.lang.reflect.Proxy; public class BookProxy 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 { Object result=null; System.out.println("事物开始....."); result=method.invoke(target, args); System.out.println("事物结束....."); return result; } } 4、定义一个测试类 package com.jdkproxy; public class TestJdkProxy { /** * main函数测试 * JDK的动态代理依靠接口实现,如果有些类并没有实现接口, * 则不能使用JDK代理,这就要使用cglib动态代理了。 */ public static void main(String[] args) { BookProxy bookProxy=new BookProxy(); BookImpl bookImpl=new BookImpl(); //BookImpl proxy=(BookImpl) bookProxy.bind(bookImpl); Book proxy=(Book) bookProxy.bind(bookImpl);//代理类和委托类进行绑定 proxy.addBook("****"); } }
一、不得利用本站危害国家安全、泄露国家秘密,不得侵犯国家社会集体的和公民的合法权益,不得利用本站制作、复制和传播不法有害信息!
二、互相尊重,对自己的言论和行为负责。