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();...            

     

  • 相关阅读:
    redhat 6.7 telnet rpm 安装包
    linux下网络配置 命令
    修复南尼U盘
    mac获取root权限
    ubuntu二进制包安装openresty
    ubuntu18源码包安装openresty
    Python监控rabbitmq的代码
    win10不能将文件拖到另外一个程序中去的解决办法
    docker配置远程管理端口
    nginx的代理配置
  • 原文地址:https://www.cnblogs.com/yxj808/p/11972916.html
Copyright © 2011-2022 走看看