四、反射面试题

  1. 什么是反射?
    反射是java的基本特征之一,允许运行中的java程序获取自身信息,并且可以操作类或对象的内部属性。

     

  2. 什么是 java 序列化?什么情况下需要序列化?
    (1)简单来说 序列化就是把Java对象储存在某一地方(硬盘、网络),也就是
        将对象的内容进行流化。
    
    (2)方便于传输、存储(内存中的对象状态保存到一个文件中或者数据库中;套
        接字在网络上传送对象;RMI)。

     

  3. 动态代理是什么?有哪些应用?
    (1)当想要给实现了某个接口的类中的方法,加一些额外的处理。比如说加日志,加事务等。
    可以给这个类创建一个代理,故名思议就是创建一个新的类,这个类不仅包含原来类方法的功
    能,而且还在原来的基础上添加了额外处理的新类。这个代理类并不是定义好的,是动态生成
    的。具有解耦意义,灵活,扩展性强。
    (2)动态代理的应用:Spring的AOP,加事务,加权限,加日志。

     

  4. 怎么实现动态代理?
    (1)首先必须定义一个接口,还要有一个InvocationHandler(将实现接口的类的对象传递给它)
    处理类。再有一个工具类Proxy(习惯性将其称为代理类,因为调用他的newInstance()可以产生
    代理对象,其实他只是一个产生代理对象的工具类)。利用到InvocationHandler,拼接代理类源
    码,将其编译生成代理类的二进制码,利用加载器加载,并将其实例化产生代理对象,最后返回。
    

     

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