🔥码云GVP开源项目 12k star Uniapp+ElementUI 功能强大 支持多语言、二开方便! 广告
**1. 什么是反射?** 反射是在运行状态中,对于任意一个类,都能够知道这个类的所有属性和方法;对于任意一个对象,都能够调用它的任意一个方法和属性;这种动态获取的信息以及动态调用对象的方法的功能称为 Java 语言的反射机制。 ***** **2. 什么是 Java 序列化?什么情况下需要序列化?** Java 序列化是为了保存各种对象在内存中的状态,并且可以把保存的对象状态再读出来。 以下情况需要使用 Java 序列化: - 想把的内存中的对象状态保存到一个文件中或者数据库中时候; - 想用套接字在网络上传送对象的时候; 想通过RMI(远程方法调用)传输对象的时候。 ***** **3. 动态代理是什么?有哪些应用?** 动态代理是运行时动态生成代理类。 动态代理的应用有 spring aop、hibernate 数据查询、测试框架的后端 mock、rpc,Java注解对象获取等。 ***** **4. 怎么实现动态代理?** JDK 原生动态代理和 cglib 动态代理。JDK 原生动态代理是基于接口实现的,而 cglib 是基于继承当前类的子类实现的。 ***** **对象拷贝** **5. 为什么要使用克隆?** 克隆的对象可能包含一些已经修改过的属性,而 new 出来的对象的属性都还是初始化时候的值,所以当需要一个新的对象来保存当前对象的“状态”就靠克隆方法了。 ***** **6. 如何实现对象克隆?** 实现 Cloneable 接口并重写 Object 类中的 clone() 方法。 实现 Serializable 接口,通过对象的序列化和反序列化实现克隆,可以实现真正的深度克隆。 ***** **7. 深拷贝和浅拷贝区别是什么?** - 浅拷贝:当对象被复制时只复制它本身和其中包含的值类型的成员变量,而引用类型的成员对象并没有复制。 - 深拷贝:除了对象本身被复制外,对象所包含的所有成员变量也将复制。