Java Class類以及獲取Class實例的三種方式


T - 由此 Class 對象建模的類的類型。例如,String.class 的類型是Class<String>。如果將被建模的類未知,則使用Class<?>。
 
[java]  view plain  copy
 
 print?
  1. public final  
  2.     class Class<T> extends Object  implements java.io.Serializable,   
  3.                   java.lang.reflect.GenericDeclaration,   
  4.                   java.lang.reflect.Type,  
  5.                               java.lang.reflect.AnnotatedElement  
 
獲取Class實例的三種方式:
  1. 運用.class的方式來獲取Class實例。對於基本數據類型的封裝類,還可以采用.TYPE來獲取相對應的基本數據類型的Class實例。例如,Integer.TYPE 與 int.class是等效的,都是int。
  2. 利用對象調用getClass()方法獲取該對象的Class實例;
    public class Test {
        public static void main(String[] args)  {
            System.out.println("第一種實例化:");
            System.out.println(int.class);
            System.out.println(Integer.TYPE);
            System.out.println("第二種實例化:");
            Test test = new Test();
            System.out.println(test.getClass().getName());
            System.out.println(test.getClass().getSimpleName());
        
        }
    }

     

  3. 使用Class類的靜態方法forName(),用類的名字獲取一個Class實例(static Class forName(String className) ),這種方式靈活性最高,根據類的字符串全名即可獲取Class實例,可以動態加載類,框架設計經常用到;
 
Class 沒有公共構造方法。Class 對象是在加載類時由 Java 虛擬機以及通過調用類加載器中的defineClass方法自動構造的,因此不能顯式地聲明一個Class對象。
 
虛擬機為每種類型管理一個獨一無二的Class對象。也就是說,每個類(型)都有一個Class對象。運行程序時,Java虛擬機(JVM)首先檢查是否所要加載的類對應的Class對象是否已經加載。如果沒有加載,JVM就會根據類名查找.class文件,並將其Class對象載入。
 
基本的 Java 類型(boolean、byte、char、short、int、long、float 和 double)和關鍵字 void 也都對應一個 Class 對象。 
 
每個數組屬於被映射為 Class 對象的一個類,所有具有相同元素類型和維數的數組都共享該 Class 對象。
 
一般某個類的Class對象被載入內存,它就用來創建這個類的所有對象。
 
 
主要方法:

newInstance

public T newInstance()
              throws InstantiationException,
                     IllegalAccessException
創建此  Class 對象所表示的類的一個新實例。如同用一個帶有一個空參數列表的 new 表達式實例化該類。
拋出: IllegalAccessException - 如果該類或其 無參 構造方法是不可訪問的。 InstantiationException - 如果此 Class 表示一個抽象類、接口、數組類、基本類型或 void; 或者該類沒有無參構造方法。


免責聲明!

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



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