獲得Class類對象的幾種方法

第一種方法:

    public static void main(String[] args) {
            String str = "Hello";
            Class<?> cls = str.getClass(); //必須有一個實例化的對象
            System.out.println(cls);

第二種:

public static void main(String[] args) {
            Class<?> cls = java.lang.String.class; 
            System.out.println(cls);

這種方法不需要一定要一個實例化的對象,直接通過類名就能得到。但是這種方法必須有一個明確的結構,就是那個類必須要存在。java.lang.String.class 如果這里寫錯了,程序就必然會報錯。編譯不能通過。但是有的時候的情況是,我們要給之后的可能新有的類預留出空間,這樣這么做就不行了。

第三種方法:

public static void main(String[] args) throws Exception{    
            Class<?> cls = Class.forName("java.lang.String"); 
            System.out.println(cls);

這個方法的好處就是即使java.lang.String不存在,在編譯的時候也不會報錯,只有在運行的時候才會報錯。

但是我們的目的不是取得類對象,取得類對象之后,我們得到類的實例化對象的方法就不用new了,這時候就可以用Class里面的方法newInstance()。
這個方法可能會拋出兩個異常:
InstantiationException: 沒有無參構造,或者類名錯誤
IllegalAccessException:構造方法私有化

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容

  • Spring Cloud為開發人員提供了快速構建分布式系統中一些常見模式的工具(例如配置管理,服務發現,斷路器,智...
    卡卡羅2017閱讀 134,869評論 18 139
  • 1. Java基礎部分 基礎部分的順序:基本語法,類相關的語法,內部類的語法,繼承相關的語法,異常的語法,線程的語...
    子非魚_t_閱讀 31,759評論 18 399
  • (一)Java部分 1、列舉出JAVA中6個比較常用的包【天威誠信面試題】 【參考答案】 java.lang;ja...
    獨云閱讀 7,141評論 0 62
  • 負重深蹲 36KG 46KG 56KG 56KG 15×1各一組 負重弓步走 2.5KG 5KG 7.5KG 10...
    茄子就是茄子閱讀 227評論 0 0
  • 創業8月昨天股東會到0點,越來越發現創業真的太好玩了,痛苦,懷疑,糾結,破舊,吵架,尋找,要求,挑戰,不斷的磨合沖...
    孫志新閱讀 170評論 0 0