您的位置:首页 > 其它

invocationHandler动态代理的使用

2016-05-11 17:01 197 查看
package org.podger.javabean;

public interface IPeople {
void  say();
}

package org.podger.javabean;

public class Student implements IPeople{

public void say() {
System.out.println("I am a Student!");
}

}

package org.podger.javabean;

public class Teacher implements IPeople {

public void say() {
System.out.println("I am a Teacher!");
}

}

package org.podger.javabean;

import java.lang.reflect.InvocationHandler;
import java.lang.reflect.Method;
import java.lang.reflect.Proxy;

public class DncProxy implements InvocationHandler {
Object obj;
Object bind(Object obj){
this.obj = obj;
return Proxy.newProxyInstance(obj.getClass().getClassLoader(), obj.getClass().getInterfaces(), this);
}

public Object invoke(Object proxy, Method method, Object[] args) throws Throwable {
return method.invoke(obj, args);
}

}

package org.podger.javabean;

public class DncProxyTest {

public static void main(String[] args) {
IPeople student = (IPeople)new DncProxy().bind(new Student());
IPeople teacher = (IPeople)new DncProxy().bind(new Teacher());
student.say();
teacher.say();
}

}
可以看到通过实现invocationHandler接口来实现动态代理依赖对象接口.
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: