什么是反射?
动态获取类的信息以及动态调用对象的方法称为Java的反射(Reflection)机制。反射提供了封装程序集、模块和类型的对象。在Java运行时环境中,对于任意一个类的对象,可以通过反射获取这个类的信息。
比如Constructor,field,method
什么是 java 序列化?什么情况下需要序列化?
java序列化就是把类的信息转成字节流,转换成字节流存储在文件中便于在网上传输,java的序列化需要实现Serializable接口,并通过Fileoutputstream和objectoutputsteam,fileinputstream,objectinputsteam等方法进行序列化或反序列化,反序列化就是把字节流文件读出来转换成类的信息
** 动态代理是什么?有哪些应用?**
动态代理:当想要给实现了某个接口的类中的方法,加一些额外的处理。比如说加日志,加事务等。可以给这个类创建一个代理,故名思议就是创建一个新的类,这个类不仅包含原来类方法的功能,而且还在原来的基础上添加了额外处理的新类。这个代理类并不是定义好的,是动态生成的。具有解耦意义,灵活,扩展性强。
应用:Spring的AOP就是动态代理实现的,加事务,加日志,加权限等
怎么实现动态代理?
JDK动态代理 代理类实现ivocationhandler
CGLIB动态代理
为什么要使用克隆?
答:克隆的对象可能包含一些已经修改过的属性,而 new 出来的对象的属性都还是初始化时候的值,所以当需要一个新的对象来保存当前对象的“状态”就靠克隆方法了。
如何实现对象克隆?
答:
实现 Cloneable 接口并重写 Object 类中的 clone() 方法。
实现 Serializable 接口,通过对象的序列化和反序列化实现克隆,可以实现真正的深度克隆。
深拷贝和浅拷贝区别是什么?
答:
浅克隆:仅仅复制所考虑的对象,而不复制它所引用的对象
深克隆:把复制的对象所引用的对象都复制了一遍