以下代码片段返回命名为 java.lang.Thread 的类的运行时 Class 描述符
1)通过Object类的getClass()方法
创建一个对象,通过getClass方法获取Class对象:
Thread t = new Thread ();
Class thread= t.getClass();//返回此 Object 的运行时类对象。
2)通过Class类的静态方法forName(),根据全类名获取Class对象
Class thread= Class.forName(" java.lang.Thread");
3)数据类型(基本和引用)的静态属性class
Class thread= Thread.class;
Class c = int.class; //自动装箱
Class c1 = String.class;
注意:一般,开发中使用第二种,因为第二种是一个字符串,而不是一个具体的类名。这样就可以把这样的字符串配置到配置文件中。
Class类:常用类
成员变量:Field
构造方法: Constructor
成员方法:Method
反射:通过Class类的方法获取以上的三个对应的对象,然后通过Filed/Method/Contructor对象调用其方法去真正的使用类的成员、方法、构造
Constructor
参数:parameterTypes - 参数数组 (class类型的参数)
返回值:一个 Constructor 对象,它反映此 Class 对象所表示的类的指定公共构造方法。
Constructor[] getContructors()
返回一个包含某些 Constructor 对象的数组,这些对象反映此 Class 对象所表示的类的所有公共构造方法。
Constructor
参数:parameterTypes - 参数数组
返回一个 Constructor 对象,该对象反映此 Class 对象所表示的类或接口的指定构造方法。
Constructor[] getDeclaredContructors()
返回 Constructor 对象的一个数组,这些对象反映此 Class 对象表示的类声明的所有构造方法。
T newInstance()
返回 此对象所表示的类的一个新分配的实例。
返回 Method 对象的一个数组,这些对象反映此 Class 对象表示的类或接口声明的所有方法,包括公共、保护、默认 (包)访问和私有方法,但不包括继承的方法。
setAccessible(boolean flag)
将此对象的 accessible 标志设置为指示的布尔值。值为 true 则指示反射的对象在使用时应该取消 Java 语言访问检查。值 为 false 则指示反射的对象应该实施 Java 语言访问检查。