MST

星途 面试题库

面试题:Java中动态代理实现的关键类与接口有哪些

请阐述在Java中实现动态代理时,涉及到的关键类和接口,并简要说明它们各自的作用。
37.9万 热度难度
编程语言Java

知识考点

AI 面试

面试题答案

一键面试

关键类和接口及作用

  1. InvocationHandler 接口
    • 作用:定义了代理实例的方法调用处理程序必须实现的接口。当代理对象的方法被调用时,实际会调用 InvocationHandler 接口实现类的 invoke 方法。invoke 方法包含了对代理对象方法调用的具体处理逻辑,例如可以在方法调用前后添加日志记录、事务处理等通用操作。
  2. Proxy 类
    • 作用:用于创建动态代理类和代理实例。它提供了静态方法 newProxyInstance,通过该方法可以创建代理实例。该方法接受三个参数,分别是类加载器、代理类要实现的接口数组以及 InvocationHandler 实例。Proxy 类负责生成代理类的字节码,并在运行时将其加载到 JVM 中,从而创建代理对象。
  3. 被代理的接口
    • 作用:动态代理需要为某个接口创建代理实例,被代理的接口定义了代理对象所具备的方法。代理对象会实现这些接口的方法,并且在方法调用时,将调用委托给 InvocationHandlerinvoke 方法进行处理。这样保证了代理对象与被代理对象具有相同的接口,使得在使用时可以用代理对象替代被代理对象。