首頁  >  文章  >  Java  >  java反射常見面試題

java反射常見面試題

(*-*)浩
(*-*)浩原創
2019-12-28 14:56:033790瀏覽

java反射常見面試題

什麼是反射?

反射主要是指程式可以存取、偵測和修改它本身狀態或行為的能力

Java                                     (建議學習:java常見面試題

在Java執行時間環境中,對於任一個類,能否知道這個類別有哪些屬性和方法?

對於任意一個對象,能否呼叫它的任一方法

Java反射機制主要提供了以下功能:

在運行時判斷任意一個物件所屬的類別。

在運行時建構任意一個類別的物件。

在執行時判斷任意一個類別所具有的成員變數和方法。

在執行時呼叫任意一個物件的方法。 

什麼是 java 序列化?什麼情況下需要序列化?

簡單來說就是為了保存在記憶體中的各種物件的狀態(也就是實例變量,不是方法),並且可以把保存的物件狀態再讀出來。

雖然你可以用你自己的各種各樣的方法來保存object states,但是Java給你一個應該比你自己好的保存物件狀態的機制,那就是序列化。

什麼情況下需要序列化:

a)當你想把的記憶體中的物件狀態儲存到一個檔案或資料庫中時候;

b)當你想要用套接字在網路上傳送物件的時候;

c)當你想要透過RMI傳送物件的時候;

##動態代理程式是什麼?有哪些應用?

動態代理程式:

當想要給實作了某個介面的類別中的方法,加上一些額外的處理。

比如說加日誌,加交易等。可以為這個類別建立一個代理,故名思議就是創建一個新的類,這個類別不僅包含原來類別方法的功能,而且還在原來的基礎上添加了額外處理的新類別。

這個代理類別並不是定義好的,是動態產生的。具有解耦意義,靈活,擴展性強。

移動代理程式的應用程式:

Spring的AOP

加交易

加上權限

#加日誌

怎麼實作動態代理?

首先必須定義一個接口,還要有一個InvocationHandler(將實作介面的類別的物件傳遞給它)處理類別。

再有一個工具類Proxy(習慣性將其稱為代理類,因為呼叫他的newInstance()可以產生代理對象,其實他只是一個產生代理對象的工具類)。

利用到InvocationHandler,拼接代理類別源碼,將其編譯產生代理類別的二進位碼,利用載入器加載,並將其實例化產生代理對象,最後返回。

更多Java相關技術,請造訪

java影片教學

欄位進行學習!

以上是java反射常見面試題的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn