四、反射面試題

  1. 什麼是反射?
    反射是java的基本特徵之一,允許運行中的java程序獲取自身信息,並且可以操作類或對象的內部屬性。

     

  2. 什麼是 java 序列化?什麼情況下需要序列化?
    (1)簡單來說 序列化就是把Java對象儲存在某一地方(硬盤、網絡),也就是
        將對象的內容進行流化。
    
    (2)方便於傳輸、存儲(內存中的對象狀態保存到一個文件中或者數據庫中;套
        接字在網絡上傳送對象;RMI)。

     

  3. 動態代理是什麼?有哪些應用?
    (1)當想要給實現了某個接口的類中的方法,加一些額外的處理。比如說加日誌,加事務等。
    可以給這個類創建一個代理,故名思議就是創建一個新的類,這個類不僅包含原來類方法的功
    能,而且還在原來的基礎上添加了額外處理的新類。這個代理類並不是定義好的,是動態生成
    的。具有解耦意義,靈活,擴展性強。
    (2)動態代理的應用:Spring的AOP,加事務,加權限,加日誌。

     

  4. 怎麼實現動態代理?
    (1)首先必須定義一個接口,還要有一個InvocationHandler(將實現接口的類的對象傳遞給它)
    處理類。再有一個工具類Proxy(習慣性將其稱爲代理類,因爲調用他的newInstance()可以產生
    代理對象,其實他只是一個產生代理對象的工具類)。利用到InvocationHandler,拼接代理類源
    碼,將其編譯生成代理類的二進制碼,利用加載器加載,並將其實例化產生代理對象,最後返回。
    

     

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章