天天看點

Java中反射學習系列教程之一Java中反射學習系列教程之一

凱哥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檔案進行解剖。将對象中的構造器、方法、屬性等解剖成一個一個對象。在運作的時候,可以動态的擷取屬性或方法

二:反射的特點

簡單的來說:

在運作的時候可以動态的建立任意對象并調用其方法,還可以生成動态代理