反射

    技术2022-07-10  109

    1. 反射机制 2 获取Class对象 【源码阶段】使用Class.forName(“全限定类名”);

    Class<?> aClass = null; try { aClass = Class.forName("com.zcc.impl"); } catch (ClassNotFoundException e) { e.printStackTrace(); } System.out.println(aClass);

    【Class对象阶段】使用类.class

    Class<test> testClass = test.class;

    【运行阶段】对象.getClass()方法

    Class<? extends test> aClass1 = new test().getClass();

    2 反射获取构造方法 【Constructor】Class类的newInstance方法是用无参的构造函数创建对象的

    test test = aClass1.newInstance();

    如果一个类没有无参的构造函数,就需要用getConstructor方法获取一个指定的构造函数,然后调用newInstance方法创建对象

    Constructor c = aClass.getConstructor(String.class,int.class); test p = (test)c.newInstance("张三", 23);

    3 反射获取成员变量并利用

    Field fo= aClass.getField("sex");//public修饰的成员变量 fo.set(o1,"男"); System.out.println(o1); //获取私有的成员变量 Field f = aClass.getDeclaredField("name"); f.setAccessible(true); f.set(o1, "李斯"); System.out.println(o1);

    4 获取成员方法

    Method m1 = aClass.getMethod("getAge");//无参的方法 int age = (int)m1.invoke(o1); System.out.println(o1.getName()+","+age); Method m2 = aClass.getMethod("setAge", int.class);//有参的构造方法 m2.invoke(o1,10); System.out.println(o1);
    Processed: 0.057, SQL: 9