问答详情
源自:3-1 模拟 JDK 动态代理实现思路分析及简单实现

moveable.getClass().getName()

Moveable moveable = (Moveable)Proxy.newProxyInstance(cls.getClassLoader(),cls.getInterfaces(),handler);
System.out.println("产生动态代理实例的类名称 = [" + moveable.getClass().getName() + "]");

Proxy类的

newProxyInstance

方法,再反射回去 找类的名字,不应该是Proxy吗?为什么是$Proxy0?

提问者:倩与倩寻 2018-08-30 20:27

个回答

  • 倩与倩寻
    2018-08-30 20:31:03

    @CallerSensitive
    public static Object newProxyInstance(ClassLoader loader,
                                          Class<?>[] interfaces,
                                          InvocationHandler h)
        throws IllegalArgumentException{
        ...
        return cons.newInstance(new Object[]{h});
        }
        这个方法返回的是一个对象,一个动态生成的代理类的对象,moveable.getClass().getName()得到的是动态生成的这个代理类的名字。