Java动态代理
Posted www
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Java动态代理相关的知识,希望对你有一定的参考价值。
Fruit.java
package com.wzh.proxy.fruit; public interface Fruit { public void eat(); }
Apple.java
package com.wzh.proxy.fruit.impl; import com.wzh.proxy.fruit.Fruit; public class Apple implements Fruit{ @Override public void eat() { System.out.println("eating apple"); } }
ProxyHandler.java
package com.wzh.proxy.fruit.proxyhandler; import java.lang.reflect.InvocationHandler; import java.lang.reflect.Method; import com.wzh.proxy.fruit.Fruit; public class ProxyHandler implements InvocationHandler{ private Fruit fruit; public ProxyHandler(Fruit _fruit) { fruit = _fruit; } @Override public Object invoke(Object proxy, Method method, Object[] args) throws Throwable { Object result = null; System.out.println("start"); result = method.invoke(fruit, args); System.out.println("over"); return result; } }
Run.java
package com.wzh.proxy.run; import java.lang.reflect.Proxy; import com.wzh.proxy.fruit.Fruit; import com.wzh.proxy.fruit.impl.Apple; import com.wzh.proxy.fruit.impl.Orange; import com.wzh.proxy.fruit.proxyhandler.ProxyHandler; public class Run { public static void main(String[] args) { Orange orange = new Orange(); ProxyHandler handler = new ProxyHandler(orange); Fruit fruitProxy = (Fruit) Proxy.newProxyInstance(orange.getClass().getClassLoader(), orange.getClass().getInterfaces(), handler); fruitProxy.eat(); } }
以上是关于Java动态代理的主要内容,如果未能解决你的问题,请参考以下文章