(面试题)反射的作用、常用API、使用场景

111 阅读1分钟
  • 定义:反射能够在程序运行时获取一个类的所有信息,比如属性和方法,并且能够使用这个类的所有属性和方法

  • 作用:让代码更灵活,降低耦合度

  • 常见API

    • 获取Class对象,使用xxx.getClass()方法和Class.forName()
    • 获取Class对象的实例,使用nexInstance()方法
    • 获取类的属性和方法,使用getField()和getMethod()方法
    • 调用这个类的方法,使用invoke()方法
    • 关闭安全检查,访问该类的私有属性和方法,使用setAccessible(true)
  • 使用场景:项目中打日志使用的就是AOP+反射+注解,通过反射获取自定义日志注解修饰的方法,打印这个方法的请求参数和执行时间,方便后序接口调优

  • 性能:反射确实存在性能问题,比直接调用慢了一个数量级。但是我们可以用一些缓存机制优化反射,比如缓存Method对象,关闭安全检查