![](https://img-blog.csdnimg.cn/270b59029c8d4688b9d195cf7a62b948.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
Java反射面试题
Java反射
复活的夜神月
这个作者很懒,什么都没留下…
展开
-
动态代理是什么?应用场景?
基于接口的动态代理是指代理类和被代理类都要实现相同的接口,代理类在处理方法时,再通过反射机制调用被代理类的方法。基于类的动态代理是指代理类和被代理类并不需要实现相同的接口,代理类通过继承被代理类,覆盖其中的方法,并在方法中添加增强或者拦截逻辑。2. RPC调用:动态代理可以实现RPC调用,将远程调用通过代理类封装起来,直接调用代理类的方法即可。总之,动态代理是一种灵活的编程方式,可以在运行时动态地创建代理对象,并且不侵入原有业务逻辑。Java中的动态代理有两种:基于接口的动态代理和基于类的动态代理。原创 2023-06-09 11:26:07 · 325 阅读 · 0 评论 -
什么是反射?
因此,在需要频繁使用某一个方法或属性的时候,最好是通过常规的直接调用实现,而在使用某些框架或者完成一些复杂操作时,可以考虑使用反射机制。Java中的反射(Reflection)是指在运行时动态获取和操作类、对象、方法、属性等信息的机制。通过Class类可以获取到一个类的对象,然后通过该对象可以获取到该类的构造函数、方法、字段等信息,进而进行相应操作。4. 在运行时动态调用一个对象的方法,或者动态设置/获取一个对象的字段的值。3. 在运行时获取一个对象的字段、方法、构造函数等信息。原创 2023-06-09 11:23:04 · 37 阅读 · 0 评论 -
怎么实现动态代理?
需要实现 InvocationHandler 接口,其中的 invoke() 方法就是代理对象方法的调用处理器,该方法会在代理对象每次调用方法时执行。然后,实现了InvocationHandler接口的 MyInvocationHandler 类,用于处理代理对象方法的句柄,在其中实现了对目标方法的增强和拦截。5. 通过代理对象调用方法:通过代理对象调用方法时,实际上是调用了InvocationHandler对象的invoke()方法中编写的增强或拦截逻辑,最终调用目标方法。原创 2023-06-09 11:29:44 · 601 阅读 · 0 评论 -
什么是 Java 序列化?什么情况下需要序列化?
Java序列化是将Java对象转换为二进制数据流的过程,也就是将对象的状态信息持久化到磁盘或者通过网络传输到其它系统中。在Java中,对象的序列化主要是通过ObjectOutputStream序列化输出流和ObjectInputStream序列化输入流实现的。同时,由于Java序列化格式是Java特定的二进制格式,因此当Java版本不同时,反序列化可能会出现兼容性问题,需要进行兼容性测试和处理。3. 传递消息:将对象序列化后,以消息的形式传递到消息队列或异步任务中,实现分布式系统的消息传递。原创 2023-06-09 11:22:31 · 604 阅读 · 0 评论