java的jdk动态代理,这里的动态是怎么体现的?
import java.lang.reflect.InvocationHandler;
import java.lang.reflect.Method;
import java.lang.reflect.Proxy;
public class ProxyHandler implements InvocationHandler {
private Object obj;
public Object bind(Object obj){
this.obj = obj;
return Proxy.newProxyInstance(obj.getClass().getClassLoader(),
obj.getClass().getInterfaces(),
this);
}
@Override
public Object invoke(Object proxy, Method method, Object[] args) throws Throwable {
Object result = null;
System.out.println("before invoke!*****");
result = method.invoke(obj, args);
System.out.println("after invoke!-----");
return result;
}
}
public class RealSubject implements Subject {
@Override
public void dosomething() {
System.out.println(" call something! ");
}
}
public interface Subject {
public void dosomething();
}
public class SubjectProxy implements Subject {
@Override
public void dosomething() {
}
}
public class TestProxy {
public static void main(String args[]){
ProxyHandler proxy = new ProxyHandler();
//绑定该类实现的所有接口
Subject sub = (Subject) proxy.bind(new RealSubject());
sub.dosomething();
}
}
具体这个代理类,java底层是如何实现的?
...全文
相关推荐
java 反射机制
在运行时,对一个JAVA类,能否知道属性和方法;能否调用它的任意方法? 答案是可以的,JAVA提供一种反射机制可以实现。 java 反射机制,包括getclass ,getfield 等等
Java动态代理两种实现方式
Java实现动态代理的两种方式。 相对来说cglib更加方便。可以实现为实现接口的类(非final类)
java动态代理实例(jdk动态代理和cglib)
实现java动态代理的两个实例,jdk动态代理和cglib
Spring框架中JDK动态代理和cglib动态代理
Spring框架的AOP中重要的一个知识点,动态代理,springAOP框架会根绝实际情况选择使用jdk的动态代理还是cglib的动态代理
浅谈JDK动态代理与CGLIB代理去区别
NULL 博文链接:https://jummy.iteye.com/blog/255628


Java SE
