JVM(二)Class對象

我覺得直接看上一篇【JVM】帶你解讀字節碼,可能會有一點懵逼,我後來想了一下,應該先說一下Class對象

一、Class對象介紹

在JVM中,只會存在兩種對象,一種是實例對象,另一種是Class對象,每個實例對象的類型信息都是由Class對象提供的。Class對象中包含了類的訪問修飾符、類的關鍵字、構造方法、屬性、方法、實現接口等信息,JVM創建一個實例對象是通過調用Class對象的構造方法進行創建的
至於在JVM中的位置,實例對象是存放在堆中的,Class對象是存放在方法區中的
Class對象的設計是符合RTTI(Run-Time Type Identification)運行時類型識別的,也就是在運行時能夠通過Class對象來識別類的類型信息,正因爲滿足RTTI,才讓java語言有了動態性

二、Class對象的創建

想要獲得一個Class對象,首先就是要編寫.java文件,然後通過編譯器編譯成.class文件,然後在通過類加載器來創建並加載到內存中
但是這裏還需要注意一下Class對象的加載時機:Class對象並不會在啓動JVM時,就全部加載進內存中,而是在執行的線程遇到需要new一個對象,在內存中找不到對應的Class對象時,就會通過類加載器去加載這個Class對象的.class文件來創建Class對象,可以理解爲懶加載

類加載子系統的詳細講解後續會再出一篇文章來講述,先挖個坑

三、Class對象的使用

說到Class對象的使用,第一個想到的就是反射機制,通過反射機制,我們可以獲得Class對象,獲得了Class對象不就意味着獲得了這個類的全部信息了嗎?
反射機制詳情可以查看我的另一篇文章Java(八)反射機制

——————————————————————————————
如果本文章內容有問題,請直接評論或者私信我。如果覺得寫的還不錯的話,點個贊也是對我的支持哦
未經允許,不得轉載!

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章