反射
- 什么是反射?答:反射指的是在运行状态下,对于任意一个类,都能获取知道这个类所有的方法和属性。对于任意一个对象,都能够调用它的任意一个方法和属性;这种动态获取信息以及动态调用对象的方法的功能称为java语言的反射机制。
- 哪里会用到反射?答:jdbc中利用反射动态加载了数据库驱动程序,Spring框架中利用反射注入属性,调用方法。
- 什么叫对象的序列化,什么是反序列化,实现对象的序列化需要做哪些工作?答:对象的序列化,将对象中的数据编码为字节序列的过程。反序列化:将对象的编码字节重新反向解码为对象的过程。在java中需要被序列化的对象属性需要实现序列化接口,为了保持序列化的稳定需要在类中添加序列化版本号。以下情况需要使用java序列化:想把内存的对象状态保存到一个文件中或数据库中时,想用套接字在网络上传送对象的时候,想通过RMI传输对象的过程。
- 反射的优缺点?优点:可以动态执行,在运行期间根据业务功能动态执行方法,访问属性,最大限度发挥了java的灵活性。缺点:对性能有影响,这类操作总是慢于直接执行代码。
- 动态代理是什么?有哪些应用?动态代理指的是运行时动态生成代理类。动态代理的应用有SpringAOP数据查询、测试框架的后端mock,rpc,java注解对象获取等。
- 怎么实现动态代理?jdk原生的动态代理和cglib动态代理。jdk动态代理是基于接口实现的,cglib动态代理是基于继承当前类的子类实现的。
- java反射机制的作用?在运行时判断任意一个对象所属的类,在运行时构造任意一个类的对象,在运行时判断一个类所具有的成员变量和方法,在运行时调用任意一个对象的方法。
- 如何使用java反射?通过全限定类名创建一个对象,通过获取构造器对象,通过构造器new一个对象,通过class对象创建一个实例对象,通过class对象获取一个属性对象,通过class对象获取一个方法对象,通过invoke方法执行