方式一:利用简单方法实现 Object类 中的getClass()方法,创建Person类,必须要明确具体的类,并且要创建对象,麻烦。(因为有更简单的办法,直接输入全类名就可以完成全部创建,其他步骤可以封装)
/**
* 获取Class对象的三种方式
* 1.Object类中的getClass()方法,必须要明确具体的类,并且要创建对象,麻烦。
*/
@Test
public void getClassObject() {
Person person = new Person();
Class clazz = person.getClass();
Person person1 = new Person();
Class clazz1 = person1.getClass();
//结果为true
System.out.println(clazz == clazz1);
}
方式二:通过对象静态属性 .class来获取对应的Class对象相对简单,但是还是需要先明确类中的静态成员。不够拓展。
/**
* 通过对象静态属性 .class来获取对应的Class对象
*/
public void getClassObject_2() {
Class clazz = Person.class;
}
方式三:通过反射,只要通过给定类的字符串名称就可以获取该类,更为拓展,forName
/**
* 方式三:只要通过给定类的字符串名称就可以获取该类,更为拓展,forName
*/
@Test
public void getClassObject_3() throws ClassNotFoundException {
String className = "com.bz.bean.Person";
Class clazz = Class.forName(className);
System.out.println(clazz);
}
有了类对象之后,可以根据类对象来获取类的对象,使用的方法为Class里的方法
Class的位置 | java.lang 类 Class<T> |
继承于 | java.lang.Object ——> java.lang.Class<T> |
<T>就是由类对象而获取的类的对象 | 类型参数:
|
所有已实现的接口: |
由类对象而产生实例对象(类的对象)所使用的方法(适用于无参对象)
Class类的对象的一个成员方法 | 公开,成员,返回值为类对象的实例对象 | newInstance() 创建此 Class 对象所表示的类的一个新实例。 |
1、通过类对象调用newInstance()方法,适用于无参构造方法:
如:String.class.newInstance()
2、通过类对象的getConstructor()或getDeclaredConstructor()方法获得构造器(Constructor)
对象并调用其newInstance()方法创建对象,适用于无参和有参构造方法。
例如:String.class.getConstructor(String.class).newInstance(“Hello World,this is Instance by getConstructor”);