有这么一个接口:
public interface Person {
public void sayHello();
}
JDK的动态代理能不能直接根绝这个接口生成实例?
JDK的动态代理是基于接口实现,所以你不光有个接口,还得要一个实现类才行。
package com.lixiaofeng.www.entity;
public class Men implements Person{
@Override
public void sayHello() {
System.out.println("men say hello!");
}
}
package com.lixiaofeng.www.entity;
import java.lang.reflect.InvocationHandler;
import java.lang.reflect.Method;
public class PersonHandler implements InvocationHandler {
private Object target;
public PersonHandler(Object target) {
this.target=target;
}
@Override
public Object invoke(Object proxy, Method method, Object[] args)
throws Throwable {
Object obj=method.invoke(target, args);
return obj;
}
}
package com.lixiaofeng.www.entity;
import java.lang.reflect.Proxy;
public class PersonProxy {
public static void main(String[] args) {
Person men=new Men();
PersonHandler handler=new PersonHandler(men);
Person proxy=(Person) Proxy.newProxyInstance(men.getClass().getClassLoader(),
men.getClass().getInterfaces(),handler);
proxy.sayHello();
}
}
打印:men say hello!