zoukankan      html  css  js  c++  java
  • Java 反射

    1.类加载器

      1.1类的加载

        程序使用某个类时,该类加载进内存中

        通过加载,连接,初始化三步进行初始化

        1.1.1加载,读入内存,将class读入内存,并且创建一个对象

        1.1.2连接,验证,是否有正确结构

          给静态成员分配内存

          解析,将类的二进制数中符号转换为直接引用

      1.2类加载实际

        凡是用到某个类时,都全部进行加载

      1.3类加载器

        用来把class文件加载进内存,首先将Demo.class加载进方法区,之后在heap中创建一个class文件的对象。

      1.4类加载器种类

        Bootstrap classLoader根类加载器

        Extension classLoader拓展类加载器

        System classLoader系统加载器

    反射的案例

         1.获取所有的构造器
            Class<?> c=Class.forName("java.lang.String");
            Constructor<?>[] p=c.getConstructors();
            for (Constructor<?> constructor : p) {
                System.out.println(constructor);
            }
         2.获取单个构造器并直接构造对象
            Class<Person> c=Person.class;
            Constructor<Person> con=c.getConstructor(String.class,int.class);
            Person p=con.newInstance("Jack",13);
            System.out.println(p);
         3.获取私有构造方法并且运行(不推荐,破坏程序的封装性)
            Class<Student> c=Student.class;
            Constructor<Student> con=c.getDeclaredConstructor(String.class,String.class);
            con.setAccessible(true);
            Student s=con.newInstance("Jack","male");
            System.out.println(s);
         4.获取成员方法并且运行
            Class<Person> c=Person.class;
            Person p=c.newInstance();
            Method method=c.getMethod("toString");
            System.out.println(method.invoke(p));
         5.泛型擦除   
            ArrayList<String> array=new ArrayList<String>();
            array.add("a");
            
            Class c=array.getClass();
            Method m=c.getMethod("add", Object.class);
            m.invoke(array,150);
            
            System.out.println(array);
  • 相关阅读:
    Matlab从入门到精通 Chapter5 数据可视化
    给source insight添加.cc的C++文件后缀识别
    机构研究报告
    配置Haproxy
    Ceph:一个 Linux PB 级分布式文件系统
    Centos安装源包出错Package xxx.rpm is not signed
    [虚拟机] 小实验: 使用KVM虚拟机,安装一个windows系统
    关于北京地铁通车计划
    python字符串和数字的基本运算符 valar
    python种类 valar
  • 原文地址:https://www.cnblogs.com/littlepage/p/10654251.html
Copyright © 2011-2022 走看看