說明:如果您有任何疑問或想咨詢其他業務請撥打電話 400 685 0732
全網監測海量數據按需發布監測預警
實時把握輿情動態精準追溯信息源頭
在學習java的過程當中,我們經常會聽見java反射機制的詞語,而java反射機制又經常與JVM相聯系,那么什么是JVM?java反射機制又該如何理解呢?今天我們就一起來好好的了解一下吧。
java反射機制——什么是JVM
首先我們了解一下JVM,什么是JVM,Java的虛擬機,java之所以能跨平臺就是因為這個東西,你可以理解成一個進程,程序,只不過他的作用是用來跑你的代碼的。上圖是java的內存模型,我們關注的點,一個方法區,一個棧,一個堆,初學的時候老師不深入的話只告訴你java的內存分為堆和棧。
假如你寫了一段代碼:Objecto=new Object();
運行了起來!
首先JVM會啟動,你的代碼會編譯成一個.class文件,然后被類加載器加載進jvm的內存中,你的類Object加載到方法區中,創建了Object類的class對象到堆中,注意這個不是new出來的對象,而是類的類型對象,每個類只有一個class對象,作為方法區類的數據結構的接口。jvm創建對象前,會先檢查類是否加載,尋找類對應的class對象,若加載好,則為你的對象分配內存,初始化也就是代碼:new Object()。
上面的流程就是你自己寫好的代碼扔給jvm去跑,跑完就over了,jvm關閉,你的程序也停止了。
java反射機制是什么
反射是什么呢?當我們的程序在運行時,需要動態的加載一些類這些類可能之前用不到所以不用加載到jvm,而是在運行時根據需要才加載,這樣的好處對于服務器來說不言而喻,舉個例子我們的項目底層有時是用mysql,有時用oracle,需要動態地根據實際情況加載驅動類,這個時候反射就有用了,假設com.java.dbtest.myqlConnection,com.java.dbtest.oracleConnection這兩個類我們要用,這時候我們的程序就寫得比較動態化,通過Classtc=Class.forName(“com.java.dbtest.TestConnection”);通過類的全類名讓jvm在服務器中找到并加載這個類,而如果是oracle則傳入的參數就變成另一個了。這時候就可以看到反射的好處了,這個動態性就體現出java的特性了!舉多個例子,大家如果接觸過spring,會發現當你配置各種各樣的bean時,是以配置文件的形式配置的,你需要用到哪些bean就配哪些,spring容器就會根據你的需求去動態加載,你的程序就能健壯地運行。
有關java反射機制的相關內容,今天就介紹到這里了,在學習java相關內容時,不要死記硬背,一定要理解,只有徹底的理解這些內容你才能夠真正的掌握。如果你還想了解更多與之有關的內容,歡迎關注我們文軍營銷官網。
推薦閱讀
說明:如果您有任何疑問或想咨詢其他業務請撥打電話 400 685 0732