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