可以解耦提高程序的可扩展性
对象.getClass():getClass()方法在object类中定义着,多用于对象的获取字节码的方式
package cn.flect;
import cn.domain.Person;
public class ReflectDemo1 {
    
    public static void main(String[] args) throws Exception {
        //1.Class.forName("全类名")
        Class cls1 = Class.forName("cn.domain.Person");
        System.out.println(cls1);
        //2.类名.class
        Class cls2  = Person.class;
        System.out.println(cls2);
        //3.对象.getClass()
        Person p = new Person();
        Class cls3 = p.getClass();
        System.out.println(cls3);
    }
}Class对象功能:
* 获取功能:
1. 获取成员变量们
* Field[] getFields() :获取所有public修饰的成员变量
* Field getField(String name) 获取指定名称的 public修饰的成员变量
          * Field[] getDeclaredFields()  获取所有的成员变量,不考虑修饰符
          * Field getDeclaredField(String name)  
      2. 获取构造方法们
          * Constructor<?>[] getConstructors()  
          * Constructor<T> getConstructor(类<?>... parameterTypes)  
          * Constructor<T> getDeclaredConstructor(类<?>... parameterTypes)  
          * Constructor<?>[] getDeclaredConstructors()  
      3. 获取成员方法们:
          * Method[] getMethods()  
          * Method getMethod(String name, 类<?>... parameterTypes)  
          * Method[] getDeclaredMethods()  
          * Method getDeclaredMethod(String name, 类<?>... parameterTypes)  
      4. 获取全类名    
          * String getName()  T newInstance(Object... initargs)
如果使用空参数构造方法创建对象,操作可以简化:Class对象的newInstance方法
原文:https://www.cnblogs.com/wangbobobobo/p/10349057.html