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