问答详情
源自:2-3 了解 JDK 动态代理

Prooxy.newProxyInstance 第一个参数

Prooxy.newProxyInstance 第一个参数用实例化类的加载器和用接口类的加载器的区别

提问者:秋天的童话4 2016-12-26 23:13

个回答

  • qq_曉月姑蘇_0
    2017-01-14 16:17:36

    //创建代理对象,因为代理代理对象实现的都是同一个接口所以产生的代理对象是实现的接口,变现了多态的作用

    Proxy.newProxyInstance(加载器,实现的接口,处理器);

    加载器:就是类加载器

    实现接口:就是car中继承的接口

    处理器:就是我们写的那个处理器,TimeHanlder

  • qq_曉月姑蘇_0
    2017-01-14 16:12:16

    我们首先要明白静态代理的是怎么一会事,
    1:首先要实现InvocationHandler处理器的接口,这个接口里面只有一个方法invoke,弄明白这个方法里面的各个参数的含义,object(Object),被代理的对象,method(Method),被代理的对象方法,args(Object[])是方法里面的参数;
    通过实现的实现InvocationHandler接口的类,进行有参构造获取参数,
    public class TimeHandler implements InvocationHandler{
    //有参构造获取参数,写了有参构造,默认的无参构造就会不存在,如果想存在,可以在写一个无参构造
    public TimeHandler(Object target){
    super();//可以不写,因为有默认的
    this.target=target;
    }
    private Object target;
    }
    //实现接口的方法
    public Object invoke(Object object,Method method,Object[] args){
    //在次添加额外的数据
    syso(“马上开始”);//简写
    //mthod的类型是Method,通过代理的对象获,获取被代理的方法,car对象中的方法没有参数,就可以不添加参数
    method.invoke(target);//获取到被代理的方法,如果是被代理的对象是car的话,这个方法就是car实现那个方法

    syso("结束");
    };

  • 慕粉1469285760
    2016-12-27 22:20:56

    同问。。。