参考
一篇文章看懂java反射机制(反射实例化对象-反射获得构造方法,获得普通方法,获得字段属性)
import java.lang.reflect.Constructor;
import java.lang.reflect.Field;
import java.lang.reflect.Method;
import java.time.LocalDateTime;
import java.util.List;
/**
 * 反射的学习
 * tag 反射
 * 参考 javascript:void(0)
 * @author yantingrui
 * @date 2021/12/8   15:03
 */
public class Info {
    
    void test(){
    }
    /**
     * 传入包名获得class对象
     */
    
    void test1() throws ClassNotFoundException {
        Class<?> cls = Class.forName("com.koala.entity.Person"); // 取得Class对象
    }
    /**
     *  获得对象,构造方法,普通方法,属性
     */
    
    void test2() throws ClassNotFoundException, NoSuchMethodException, NoSuchFieldException, IllegalAccessException, InstantiationException {
        Class<?> cls = Class.forName("com.koala.entity.Person"); // 取得Class对象
        // 只能无参构造 有参数构造需要指定每个域的类型
        Object obj = cls.newInstance(); //反射实例化对象
        // 参数需要传入 所以的属性.class 这个才能有参数构造
        Constructor<?> cons = cls.getConstructor(String.class, Integer.class, LocalDateTime.class, List.class);//获得构造方法
//        Object obj = cons.newInstance("张三", 20); // 为构造方法传递参数
        Method m3 = cls.getDeclaredMethod("getName"); //获得get方法
//        m.invoke(obj);//输出123456789,这个obj可以是new出来的或newInstance出来的
        Field nameField = cls.getDeclaredField("name"); // 获得name属性
//        System.out.println(obj);
//        System.out.println(o.toString());
        System.out.println(cons);
        System.out.println(m3);
        System.out.println(nameField);
    }
    
    void test3(){
    }
}                
                










