1. 什么是反射
反射就是java类中的各个部分:构造方法,成员变量,方法。 映射成一个个的java对象。即在运行状态,对于任意一个类,都能够知道这个类的所有属性和方法,并且可以调用这个类的属性和方法
2. Class类
想要使用反射,需要先获取操作类对应的Class对象。Class对象是由jvm加载 .class文件创建的。在Class对象中我们可以获取该类的许多基本信息
3. 获取Class对象的3种方式
Class dog = Dog.class; dog = Class.forName("com.dujie.exercise.bean.Dog"); dog = new Dog().getClass();
4. 简单操作
Class<Dog> clazz = Dog.class; //获取公共的无参构造器 Constructor<Dog> dogCon = clazz.getConstructor(); Dog dog = dogCon.newInstance(); //获取私有的构造器 Constructor<Dog> dogCon2 = clazz.getDeclaredConstructor(String.class, int.class); dogCon2.setAccessible(true);//暴力反射 Method setName = clazz.getMethod("setName", String.class); setName.invoke(dog, "DOG"); Field name = clazz.getDeclaredField("name"); name.setAccessible(true); System.out.println(name.getGenericType()); System.out.println(name.getGenericType().equals(String.class));