1、什麼是反射?
反射主要是指程式可以存取、偵測、修改它本身狀態或行為的一種能力
Java反射:
在Java執行環境中,對於任意一個類,能否知道這個類別有哪些屬性和方法?對於任意一個對象,能否呼叫它的任意一個方法。
(相關影片教學推薦:java影片教學)
Java反射機制主要提供了以下功能:
在運行時判斷任意一個物件所屬的類別。
在運行時建構任意一個類別的物件。
在執行時判斷任意一個類別所具有的成員變數和方法。
在執行階段呼叫任意一個物件的方法。
2、什麼是 java 序列化?什麼情況下需要序列化?
簡單來說就是為了保存在記憶體中的各種物件的狀態(也就是實例變量,不是方法),並且可以把保存的物件狀態再讀出來。雖然你可以用你自己的各種各樣的方法來保存object states,但是Java給你一個應該比你自己好的保存物件狀態的機制,那就是序列化。
(相關教學推薦:java入門)
什麼情況下需要序列化:
當你想把的記憶體中的物件狀態儲存到一個檔案或資料庫中時候;
當你想用套接字在網路上傳送物件的時候;
#當你想透過RMI傳輸物件的時候;
3、動態代理程式是什麼?有哪些應用?
動態代理程式:
當想要給實作了某個介面的類別中的方法,加上一些額外的處理。比如說加日誌,加事務等。可以為這個類別建立一個代理,故名思議就是創建一個新的類,這個類別不僅包含原來類別方法的功能,而且還在原來的基礎上添加了額外處理的新類別。這個代理類別並不是定義好的,是動態產生的。具有解耦意義,靈活,擴展性強。
動態代理的應用:
Spring的AOP
加交易
加上權限
加上日誌
4、怎麼實作動態代理?
首先必須定義一個接口,還要有一個InvocationHandler(將實作介面的類別的物件傳遞給它)處理類別。再有一個工具類Proxy(習慣性稱之為代理類,因為呼叫他的newInstance()可以產生代理對象,其實他只是一個產生代理對象的工具類)。利用到InvocationHandler,拼接代理類別源碼,將其編譯產生代理類別的二進位碼,利用載入器加載,並將其實例化產生代理對象,最後返回。
面試題推薦:java面試題
#以上是2020全新Java面試題——反射的詳細內容。更多資訊請關注PHP中文網其他相關文章!