zoukankan      html  css  js  c++  java
  • 面试知识点四:反射

    57.什么是反射?

    58.什么是 java 序列化?什么情况下需要序列化?

    59.动态代理是什么?有哪些应用?

    60.怎么实现动态代理?

    57.什么是反射?

    反射机制是在运行状态中,对于任意一个类,都能够知道这个类的所有属性和方法;对于任意一个对象,都能够调用它的任意一个方法和属性;这种动态获取的信息以及动态调用对象的方法的功能称为java语言的反射机制。

     Java反射机制详解

    58.什么是 java 序列化?什么情况下需要序列化?serialVersionUID有什么作用?

    Java对象序列化是一个用于将对象状态转换为字节流的过程,可以将其保存到磁盘文件中或通过网络发送到任何其他程序;从字节流创建对象的相反的过程称为反序列化。而创建的字节流是与平台无关的,在一个平台上序列化的对象可以在不同的平台上反序列化。

    对象的序列化技术在EJB3.0中得到广泛的使用,分布式的架构,远程方法调用,那肯定要用到对象序列化;
    客户端通过JNDI查找到某一个EJB,那么你调了该企业Bean的方法,传近去的这个参数是需要序列化的,该方法的返回值,也是要序列化传过来的;

    显式地定义serialVersionUID有两种用途: 

      1)在某些场合,希望类的不同版本对序列化兼容,因此需要确保类的不同版本具有相同的serialVersionUID;在某些场合,不希望类的不同版本对序列化兼容,因此需要确保类的不同版本具有不同的serialVersionUID。 

      2)当你序列化了一个类实例后,希望更改一个字段或添加一个字段,不设置serialVersionUID,所做的任何更改都将导致无法反序化旧有实例,并在反序列化时抛出一个异常。如果你添加了serialVersionUID,在反序列旧有实例时,新添加或更改的字段值将设为初始化值(对象为null,基本类型为相应的初始默认值),字段被删除将不设置。

    Java基础学习总结——Java对象的序列化和反序列化

    序列化版本号serialVersionUID的作用

    java通常在什么情况下用到序列化?

    59.动态代理是什么?有哪些应用?

     动态代理是一种运行时动态创建代理对象、动态处理代理对象方法调用的机制,很多场景都是利用类似机制做到的,比如用来包装RPC调用、面向切面的编程(AOP)。

    Java 动态代理作用是什么?

    60.怎么实现动态代理?

    先通过Proxy类的newProxyInstance获取代理对象,然后基于该代理对象的方法调用会触发与该代理对象关联的invocation handler中的invoke方法。invoke方法中会发起对真实对象方法的调用,以及一些别的操作。

    Java动态代理机制

  • 相关阅读:
    「UVA12293」 Box Game
    「CF803C」 Maximal GCD
    「CF525D」Arthur and Walls
    「CF442C」 Artem and Array
    LeetCode lcci 16.03 交点
    LeetCode 1305 两棵二叉搜索树中的所有元素
    LeetCode 1040 移动石子直到连续 II
    LeetCode 664 奇怪的打印机
    iOS UIPageViewController系统方法崩溃修复
    LeetCode 334 递增的三元子序列
  • 原文地址:https://www.cnblogs.com/zfyang2429/p/11119099.html
Copyright © 2011-2022 走看看