Reflection 获取Class类对象的几种方法
四种方法拿到的Class类对象,都是同一对象
-
Class.forname()
Class cls1 = Class.forName("com.canyan7n.Cat");
- 已知类的全路径
- 通过配置文件读取
-
类名(实例对象的类型).class
Class<Cat> cls2 = Cat.class;
-
类加载阶段
-
多用于参数传递
-
-
对象名.getClass()
Cat cat = new Cat(); Class cls3 = cat.getClass();
- 已拿到实例对象
-
类加载器:实例对象.getClass().getClassLoader().loadClass(类的全路径)
ClassLoader classLoader = cat.getClass().getClassLoader(); Class cls4 = classLoader.loadClass("com.canyan7n.Cat");
- 已拿到实例对象
-
基本数据类型获取Class类对象
Class<Integer> integerClass = int.class;
- int.class
-
基本数据类型对应的包装类
Class<Integer> integerClass1 = Integer.TYPE;
- Integer.type
-
注意:反正同一对象在堆内存中,只有一个Class类对象