首頁  >  文章  >  Java  >  2020全新Java面試題——反射

2020全新Java面試題——反射

王林
王林轉載
2020-06-12 16:26:541898瀏覽

2020全新Java面試題——反射

1、什麼是反射?

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

Java反射:

在Java執行環境中,對於任意一個類,能否知道這個類別有哪些屬性和方法?對於任意一個對象,能否呼叫它的任意一個方法。

(相關影片教學推薦:java影片教學

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

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

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

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

  • 在執行階段呼叫任意一個物件的方法。 

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

簡單來說就是為了保存在記憶體中的各種物件的狀態(也就是實例變量,不是方法),並且可以把保存的物件狀態再讀出來。雖然你可以用你自己的各種各樣的方法來保存object states,但是Java給你一個應該比你自己好的保存物件狀態的機制,那就是序列化。

(相關教學推薦:java入門

什麼情況下需要序列化:

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

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

  • #當你想透過RMI傳輸物件的時候;

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

動態代理程式:

當想要給實作了某個介面的類別中的方法,加上一些額外的處理。比如說加日誌,加事務等。可以為這個類別建立一個代理,故名思議就是創建一個新的類,這個類別不僅包含原來類別方法的功能,而且還在原來的基礎上添加了額外處理的新類別。這個代理類別並不是定義好的,是動態產生的。具有解耦意義,靈活,擴展性強。

動態代理的應用:

  • Spring的AOP

  • 加交易

  • 加上權限

  • 加上日誌

4、怎麼實作動態代理?

首先必須定義一個接口,還要有一個InvocationHandler(將實作介面的類別的物件傳遞給它)處理類別。再有一個工具類Proxy(習慣性稱之為代理類,因為呼叫他的newInstance()可以產生代理對象,其實他只是一個產生代理對象的工具類)。利用到InvocationHandler,拼接代理類別源碼,將其編譯產生代理類別的二進位碼,利用載入器加載,並將其實例化產生代理對象,最後返回。

面試題推薦:java面試題

#

以上是2020全新Java面試題——反射的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文轉載於:csdn.net。如有侵權,請聯絡admin@php.cn刪除