import java.lang.reflect.InvocationHandler; import java.lang.reflect.Method; import java.lang.reflect.Proxy; /** * JDK动态代理。 * @author Bright Lee */ public class JdkDynamicProxyTest { public static void main(String[] args) { Interface target = new Class(); JdkDynamicProxyHandler handler = new JdkDynamicProxyHandler(target); Interface proxy = (Interface) Proxy.newProxyInstance( target.getClass().getClassLoader(), target.getClass().getInterfaces(), handler); String result = proxy.getName(); System.out.println(result); } } /** * 定义一个接口,由动态代理实现该接口,并进行增强。 */ interface Interface { public String getName(); } /** * 接口的实现类。 */ class Class implements Interface { public String getName() { return "MyName"; } } class JdkDynamicProxyHandler implements InvocationHandler { private Object target; public JdkDynamicProxyHandler(Object target) { this.target = target; } @Override public Object invoke(Object proxy, Method method, Object[] args) throws Throwable { if (method.getName().equals("getName")) { String name = (String) method.invoke(target, args); name = "My name is: " + name; return name; } else { return null; } } }运行结果:
My name is: MyName
青蛙客服系统:https://download.csdn.net/download/look4liming/93326820