zoukankan      html  css  js  c++  java
  • java 动态代理 demo 实现原理 参数理解(三)

    动态代理两个重要的组成:   Proxy   与   InvocationHandler

    Hello1  hello = (Hello1) Proxy.newProxyInstance(Hello.class.getClassLoader(),new Class[]{Hello1.class},new HelloProxy<HelloWorld>(new HelloWorld()));

    public static Object newProxyInstance(ClassLoader loader,Class<?>[] interfaces, InvocationHandler h)

    第一个类加载器,  目前觉得这个理解的不到位,因为要生成一个在内存中的代理对象,需要一个类加载器器,平常

    第二个参数,被代理对象的所有接口,假如 hello 实现了 Hello 、 Hello1  这两个接口,这个参数 就变数,两个接口组成的 class数组, 参数的目的是: 本质上其实是多态,  这样

    Proxy.newProxyInstance(hello.getClass().getClassLoader(), hello.getClass().getInterfaces(), this);  这个方法可以 强制转换成Hello  也可以是 Hello1

    第三个参数  这个参数 要实现 InvocationHandler 接口

    InvocationHandler   要实现的方法如下:

    
    
    public Object invoke(Object proxy, Method method, Object[] args) throws Throwable {

    三个参数: proxy  这个感觉没有用上

    这样的是第二个参数:  method  这个是被代理类的接口层的实现方法的Class 对象,比如有个方法 sayHello 这个就是sayHello 的class 对象,然后通过反射机制 去调用这个方法

    第三个参数  就是方法使用到的参数

    积少成多, 积沙成塔.
  • 相关阅读:
    高校教师职评
    高校教师曝职评内幕:混行政圈比科研圈更重要
    【50.88%】【Codeforces round 382B】Urbanization
    【64.22%】【codefoces round 382A】Ostap and Grasshopper
    【u253】售货厅
    【u250】manhattan
    【19.77%】【codeforces 570D】Tree Requests
    【t063】最聪明的机器人
    Java Web整合开发(38) -- Log4J
    公网 or 内网
  • 原文地址:https://www.cnblogs.com/lei0913/p/10957725.html
Copyright © 2011-2022 走看看