public class MyClass {
public static void main(String[] args) throws Exception {
//静态代理
// Massage message = new Lucy();
// Agent agent = new Agent(message);
//
// agent.massage();
//动态代理
A a= new A();
Object o = Proxy.newProxyInstance(MyClass.class.getClassLoader(),
new Class[]{Massage.class}, new InvocationHandler() {
@Override
public Object invoke(Object o, Method method, Object[] objects) throws Throwable {
return method.invoke(a,objects);
}
});
Massage massage = (Massage) o;
massage.massage();
Wash wash = (Wash) o;
wash.wash();
proxy();
}
private static void proxy() throws Exception {
String name = Massage.class.getName() + "$Proxy0";
//生成代理指定接口的Class数据
byte[] bytes = ProxyGenerator.generateProxyClass(name, new Class[]{Massage.class});
FileOutputStream fos = new FileOutputStream("lib/" + name + ".class");
fos.write(bytes);
fos.close();
}
}
动态代理的使用
猜你喜欢
转载自blog.csdn.net/baidu_24743861/article/details/128481825
今日推荐
周排行