1、通過對象獲得類的class對象
- Class aClass = 對象.getClass();
- Person person = new Person();
Class c1 = person.getClass();
- Person person = new Person();
2、通過Class.forName("包名+類名")獲取類的class對象
- Class c2 = Class.forName("com.xbky.Person");
3、通過類名獲取Class對象
- Class aClass =類名.class;
- Class
c3 = Person.class;
- Class
4、基本數據類型的包裝類都有一個TYPE屬性,可以直接用類名.TYPE
獲取
- Class c4 = Integer.TYPE;
- Class c4 = Byte.TYPE;
package com.xbky;
/**
* 測試類
*/
public class 獲取Class對象的幾種方式 {
public static void main(String[] args) throws ClassNotFoundException {
// 1、通過對象獲得類的class對象
Person person = new Person();
Class c1 = person.getClass();
System.out.println(c1.hashCode()); // 685325104
// 2、通過Class.forName("包+類")獲取類的class對象
Class c2 = Class.forName("com.xbky.Person");
System.out.println(c2.hashCode()); // 685325104
// 3、通過類名獲取Class對象
Class<Person> c3 = Person.class;
System.out.println(c3.hashCode()); // 685325104
// 4、基本數據類型的包裝類都有一個 TYPE屬性,能夠獲取包裝類的class對象
Class<Integer> integerClass1 = Integer.TYPE;
Class<Integer> integerClass2 = Integer.TYPE;
Class<Byte> byteClass = Byte.TYPE;
System.out.println(integerClass1.hashCode()); // 460141958
System.out.println(integerClass2.hashCode()); // 460141958
System.out.println(byteClass.hashCode()); //1163157884
// 5、通過Class對象獲取父類的類型
Class superclass = c1.getSuperclass();
System.out.println(superclass); // class java.lang.Object
}
}
/**
* 類
*/
class Person {
}
總結:
1、獲取一個普通類的Class對象,可以通過getClass()、Class.forName(String name)、類名.class三種方式,包裝類可以直接調用TYPE屬性獲取Class對象。
2、每個類不管創建多少個類對象,它們的Class對象都是同一個,可以通過hashCode()方法來查看他們的hashCode碼。