JDK 动态代理:
一,定义接口
public interface IPoxyTest {
String eat();
String sleep();
}
二,定义实现
public class PoxyTest implements IPoxyTest{
@Override
public String eat() {
System.out.println("吃饭中。。。");
return "我要吃饭";
}
@Override
public String sleep() {
System.out.println("睡觉中。。。");
return "我要睡觉";
}
}
三,测试
class test{
public static void main(String[] args) {
//需要代理的 实例
IPoxyTest iPoxyTest = new PoxyTest();
IPoxyTest iPoxyTest1 =(IPoxyTest) Proxy.newProxyInstance(iPoxyTest.getClass().getClassLoader(), iPoxyTest.getClass().getInterfaces(), new InvocationHandler() {
@Override
public Object invoke(Object proxy, Method method, Object[] args) throws Throwable {
Object result;
if("eat".equals(method.getName())){
System.out.println("吃饭前:"+method.getName());
//执行的方法
result = method.invoke(iPoxyTest, args);
System.out.println("吃饭后");
}else {
System.out.println("睡觉前===》:"+method.getName());
//执行的方法
result = method.invoke(iPoxyTest, args);
System.out.println("睡觉后===》");
}
return result;
}
});
iPoxyTest1.eat();
iPoxyTest1.sleep();
}
}