凱哥java 凱哥java
在上一個系列教程-《Java中注解學習系列教程》中解析自定義注解的時候用到了Java中一種技術--反射。其實在很多源碼中,我們都能看到反射的身影。那麼什麼是反射?為什麼要用反射?反射都有哪些常用API?從本文開始我們将系統的介紹Java中反射技術。
Java反射學習系列教程主要内容:
本文主要内容:
一:什麼是反射?
二:反射的特點是什麼?
一:Java中反射是什麼
反射中的反怎麼了解
既然有反射及反着來,那麼什麼是【正】呢?請看下面代碼:
Person p = new Person();
這個代碼,我們大家都很熟悉,在剛學Java的時候聲明對象及對象引用的時候老師就說了,聲明對象要使用關鍵字 new來建立對象。
其實作在我們來分析上面這行代碼
等号左邊 Person p:我已經知道我需要的是一個Person對象,使用p這個變量來代替Person對象。
在看等号右邊new Person():new 是關鍵之就不多說了,而new出的對象就是我需要的Person對象了。
如果我們在new的時候使用其他對象會怎麼樣?
會提示cannot resolve symol 的錯誤。不能轉換的。
以上流程就是我們說的【正】流程建立對象。
我們可以分析得到:
在使用對象的時候,已經知道需要使用的對象類型。如上圖中:已經知道使用的對象是Person而不是Student對象了。也就是說,在運作時候,需要什麼對象,我們就建立什麼對象。
反射中的反的了解:在使用的之前,提前不知道需要使用什麼類型的對象。隻是在調用的時候,才知道要調用的對象類型。這種反其道而行的就是反射中反的了解。
反射定義
先來看看百科上是怎麼定義的
也可以這麼了解:
反射就是.class檔案在運作的時候,進行拆分。
可以了解為反射是在運作的時候對.class檔案進行解剖。将對象中的構造器、方法、屬性等解剖成一個一個對象。在運作的時候,可以動态的擷取屬性或方法
二:反射的特點
簡單的來說:
在運作的時候可以動态的建立任意對象并調用其方法,還可以生成動态代理