标签:mic static rri ack 创建 space 必须 handler imp
1 package com.sean.zzzjvm; 2 3 import java.lang.reflect.InvocationHandler; 4 import java.lang.reflect.Method; 5 import java.lang.reflect.Proxy; 6 7 /** * * @Author Sean * @Date 2017/8/20 21:43. * @Version */ 8 public class DynamicProxyTest { 9 10 // 定义一个接口 11 interface IHello{ 12 void sayHello(); 13 } 14 15 // 实现该接口的类 16 static class Hello implements IHello{ 17 18 @Override 19 public void sayHello() { 20 System.out.println("hello world"); 21 } 22 } 23 24 // 创建一个动态代理类,实现 InvocationHandler 接口 25 static class DynamicProxy implements InvocationHandler{ 26 Object originalObj; 27 28 // 创建一个代理的方法,在 new DynamicProxy().bind(new Hello()); 执行 29 Object bind (Object originalObj){ 30 this.originalObj = originalObj; 31 // 返回一个代理对象 32 return Proxy.newProxyInstance(originalObj.getClass().getClassLoader(), 33 originalObj.getClass().getInterfaces(),this); 34 } 35 36 // 默认重写的方法,在 hello.sayHello() 执行 37 @Override 38 public Object invoke(Object proxy, Method method, Object[] args) throws Throwable { 39 System.out.println("welcome"); 40 return method.invoke(originalObj,args); 41 } 42 } 43 44 public static void main(String[] args){ 45 // IHello hello = new Hello(); 46 // 调用动态代理的方法 47 IHello hello = (IHello) new DynamicProxy().bind(new Hello()); 48 hello.sayHello(); 49 } 50 51 }
标签:mic static rri ack 创建 space 必须 handler imp
原文地址:http://www.cnblogs.com/ios9/p/7473216.html