zoukankan      html  css  js  c++  java
  • 反射

    一、反射
    反射:利用类加载时在堆中创建的java.lang.Class对象去获得该类类加载以后在方法区中创建的类信息、方法信息、变量信息.....
    1.Class c=Class.forName("[类全包名+类名]/[全限定名]");//通过类加载器加载全限定名对应的类;
    可以利用类的Class对象可以创建对象,访问属性,访问方法,访问构造器
    2 : 创建对象: c.newInstance();
    3. 获得属性镜像: Field field = c.getField("属性名");
                Field[] fields = c.getFields();//获取所有公共的属性
                Field[] fields = c.getDeclaredFields();//获取所有公开的属性
        
    4. 获得方法镜像: Method method = c.getMethod("方法名",参数1.class,参数2.class...);
                Method method = c.getDeclaredMethod("方法名",,参数1.class,参数2.class...);
     4.1:利用方法镜像调用目标对象的方法:
                Object returnValue = method.invoke(obj, args...);
             4.2:利用方法镜像获得方法的返回值类型
                method.getGenericReturnType();
             4.3:利用方法镜像获得方法的修饰符
                method.getModifiers()
             4.4:利用方法镜像获得方法名
                method.getName();
             4.5:利用方法镜像获得方法的参数列表
                method.getGenericParameterTypes();
             4.6:利用方法镜像获得方法的异常
                method.getGenericExceptionTypes();
    5.获取构造器镜像:Constructor<?>[] constructors = c.getConstructors();
                 Constructor<?> constructor2 = c.getConstructor(参数1.class,参数1.class,...);

             5.1:利用构造器镜像 创建对象
                constructor.newInstance(参数,参数,...);//用有参构造器创建对象

            注意:反射创建对象有两种方式:
                1,直接用class.newInstance();//调用无参构造器创建对象
                2,利用class获得有参构造器,然后调用newInstance(参数...);
    6 : 获取注解镜像:getDeclaredAnnotations(); 或者 getAnnotations();
    注:获取方法上的注解就使用  method.getAnnotations();或者    method.getDeclaredAnnotations();  获取属性上的注解就使用  field.getAnnotations();...            

     

  • 相关阅读:
    PHP防跨站之open_basedir目录设置
    在线Jupyter平台,验证手机号可免费使用
    wget命令之用户密码cookies断点续传指定类型整站下载
    linux控制台输出到文件
    结构体取变量
    常用编码解码识别
    #define和const
    做一个自己的清理临时文件的小程序(附成品&升级版)
    C盘清理/瘦身
    修复Word启动失败 报错WPS32
  • 原文地址:https://www.cnblogs.com/yxj808/p/11972916.html
Copyright © 2011-2022 走看看