代理的主要类: java.lang.relfect.Proxy
最常用的方法就是生成代理对象:
public static Object newProxyInstance(ClassLoader loader, Class<?>[] interface,
InvocationHandler h) throws IllegalArgumentException
例子:

/**//*
*InterfacePrint.java
*/
package org.proxy.test;

public interface InterfacePrint ...{
public void Hello(String str);
public void Byebye();
}使用Proxy示例:

/**//*
*proxyTest.java
*/
package org.proxy.test;
import java.lang.reflect.InvocationHandler;
import java.lnag.reflect.Method;
import java.lang.reflect.Proxy;
import java.util.ArrayList;
import java.util.List;

public proxyTest implements InterfacePrint ...{
public proxyTes() ...{}

public void Hello(String str) ...{
System.out.println("Hello World, " + str);
}

public void Byebye() ...{
System.out.println("Bye-bye...");
}

public static void main(String[] args) throws Exception ...{
proxyTest proxy = new proxyTest();
InterfacePrint ip = (InterfacePrint)Proxy.newProxyInstance(Thread.currentThread().getContextClassLoader(),
proxy.getClass().getInterfaces(), new ProxyTestHandler<InterfacePrint>(proxyTest));
System.out.println("IP.name = " + ip.getClass().getName());
ip.Hello("天亮啦");
ip.Byebye();
}

static class ProxyTestHandler<T> implements InvocationHandler ...{
private T t;

public ProxyTestHandler(T t) ...{
this.t = t;
}

public Object invoke(Object proxy, Mehtod method, Object[] args) throws Throwable ...{
System.out.println("即将被调用的方法是" + method.getName());
return method.invoke(t, args);
}
}
}
本文介绍如何使用Java反射包中的Proxy类实现动态代理。通过创建一个简单的示例,展示了如何为接口生成代理对象,并通过InvocationHandler接口指定代理行为。
1002

被折叠的 条评论
为什么被折叠?



