java中反射的原理

2021-07-09 01:11:39 字數 535 閱讀 1262

簡單的回憶下,下次做具體的分析。

首先有乙個反射包,這個包裡有這些類,

方法類:放類裡的一些方法,

構造方法類,放構造方法資訊;

欄位類,放類的一些字段資訊,

class類,這個類的型別資訊,乙個類在編譯完後會形成乙個.class檔案,這個檔案裡會有乙個class類存放這個類的型別資訊。

執行期間,我們如果要產生某個類的物件。jvm會根據.class類來找class物件,並把他載入到記憶體中(如果已經載入到了記憶體,就不會在載入了)。載入到記憶體後呢,以後就都會用這個class來產生該型別的所有物件了。

所謂的反射就是,通過類載入器classloader去載入這個類的class物件class c1 = class.forname(classname),這裡會先從記憶體裡去找,如果沒有找到就把這個class放到記憶體中。然後通過這個class物件.newinstance()拿到類例項,object c = c1.newinstance();得到物件後就可以拿到這個類的所有方法了,並且可以拿到方法的引數列表,然後通過invoke方法就可以執行這個類的方法了。

JAVA中的反射

反射的原理 應用在一些通用性比較高的 中 後面學到的框架,大多數都是使用反射來實現的 在框架開發中,都是基於配置檔案開發 在配置檔案中配置了類,可以通過反射得到類中的所有內容,可以讓類中的某個方法來執行使用反射首先需要得到class類 三種方式獲取class類 類名.class 物件.getclas...

Java中的反射

反射,曾經聽說過,一致覺得,須要什麼樣的類,就寫什麼樣的類,不就成了,何必去 別人類中元素。所以一直沒學習關於反射的東西。直到前幾天看到改動listview的高速滑塊影象。看到須要用到反射 昨天也就看了看反射 先說概念 反射就是載入乙個執行時才得知名稱的類,獲悉其完整構造,並生成物件屍體。或對其變數...

JAVA中的反射

應用場景 程式在執行時接收到外部傳入的乙個物件,該物件在編譯時型別是object,但程式又需要呼叫該物件執行時的型別的方法。為了解決這個問題,程式需要在執行時發現物件和類的真實資訊。解決該問題有以下兩個做法。第一種做法是假設在編譯時和執行時的都完全知道型別的真實資訊。在這種情況下,可以先使用inst...