标签:hand 动态 span ice main lang and string getname
一、动态代理
1、定义接口
public interface CoverProxyInterface { String eat(String str); String sleep(String str); }
2、实现接口
public class CoverProxyClass implements CoverProxyInterface { @Override public String eat(String str) { return str; } @Override public String sleep(String str) { return str; } }
3、实现代理
import java.lang.reflect.InvocationHandler; import java.lang.reflect.Method; import java.lang.reflect.Proxy; public class ProxyPractice { public static void main(String[] args) { CoverProxyInterface cpc = new CoverProxyClass(); CoverProxyInterface proxy = (CoverProxyInterface) Proxy.newProxyInstance(cpc.getClass().getClassLoader(), cpc.getClass().getInterfaces(), new InvocationHandler() { @Override public Object invoke(Object proxy, Method method, Object[] args) throws Throwable { if ("eat".equals(method.getName())) { args[0] = "我 " + args[0]; String res = (String) method.invoke(cpc, args); res = res + " 大西瓜"; return res; } else if ("sleep".equals(method.getName())) { args[0] = "你 " + args[0]; String res = (String) method.invoke(cpc, args); res = res + " 大软床"; return res; } else { return null; } } }); String eat = proxy.eat("吃"); System.out.println(eat); String sleep = proxy.sleep("睡"); System.out.println(sleep); } }
标签:hand 动态 span ice main lang and string getname
原文地址:https://www.cnblogs.com/linding/p/13601116.html