java 獲取Class對象的幾種方式


1、通過對象獲得類的class對象

  • Class aClass = 對象.getClass();
    • Person person = new Person();
      Class c1 = person.getClass();

2、通過Class.forName("包名+類名")獲取類的class對象

  • Class c2 = Class.forName("com.xbky.Person");

3、通過類名獲取Class對象

  • Class aClass =類名.class;
    • Class c3 = Person.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碼。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM