java的反射机制

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));
原文地址:https://www.cnblogs.com/zhangzonghua/p/12837885.html