动态代理示例
来源:互联网 发布:天龙八部男的染发数据 编辑:程序博客网 时间:2024/06/08 13:05
动态代理只对接口有效!!!
示例接口:
public interface Student { void login (); void submit ();}
示例接口的实现类:
public class StudentImp implements Student { @Override public void login () { System.out.println ("登录了,"); } @Override public void submit () { System.out.println ("提交了"); }}
要点:
定义实现自己的InvocationHandler类:
import java.lang.reflect.InvocationHandler;import java.lang.reflect.Method;/** * Created by Void Young on 5:15 PM 7/26/2016 . * IDEA-Test . * 对于這里的运行机制,还未理解, * 比如method对象是怎么获取到的? * args参数又是从哪里传入? */public class MyInvocationHandler implements InvocationHandler { Object target; public MyInvocationHandler (Object target) { this.target = target;//要被代理的对象 } @Override public Object invoke (Object proxy, Method method, Object[] args) throws Throwable { System.out.println ("来呀,互相伤害呀");//此处为被代理方法运行前 要添加实现的内容 method.invoke (target, args); //执行被代理的target的方法method ,不定长参数args是该方法是实参 System.out.println ("我艹");//此处为被代理方法运行后 要添加实现的内容 return null; }}
测试类:
import java.lang.reflect.Proxy;/** * Created by Void Young on 5:19 PM 7/26/2016 . * IDEA-Test . */public class TestDTDL { public static void main (String[] args) { StudentImp si = new StudentImp (); si.login (); si.submit (); System.out.println ("------华丽的分割线---------"); MyInvocationHandler mih = new MyInvocationHandler (si);//new一个自己的InvocationHandler Student s =// 只支持接口用接口的实例接收结果 (Student)//结果需要强转类型 Proxy.newProxyInstance ( si.getClass ().getClassLoader (), //传入代理对象的classloader si.getClass ().getInterfaces (), // 代理对象的接口类 mih);//自定义的InvocationHandler s.login (); s.submit (); }}
运行实例:
0 0
- Java 动态代理示例
- 动态代理示例
- 动态代理,示例
- JDK动态代理示例
- 动态代理示例
- JDK动态代理示例
- 动态代理代码示例
- Java动态代理示例代码
- Java动态代理示例代码
- 动态代理的简单示例
- Java 动态代理简单示例
- java 之 动态代理学习示例
- java动态代理设计模式简单示例
- CGlib的动态代理使用示例
- java简单的动态代理示例
- Java中动态代理实现示例
- 动态代理模式示例-接上文
- 动态代理详解(一)应用示例
- 用highcharts构造散点图
- MongoDB索引的种类与使用
- STL相关笔记
- 【POJ】[1064]Cable master
- php记录代码执行时间
- 动态代理示例
- HDU 孪生素数
- 机器学习与R之BP神经网络
- AngularJS 表格
- gdb 的调试原理 以及Android的安全机制
- 【Android进阶】 Android 实现个性的ViewPager切换动画 实战PageTransformer(兼容Android3.0以下)
- sql语句随机展示数据
- miniui自定义messageBox框
- Ubuntu下远程访问MySQL数据库