企业真题

对反射了解吗?反射有什么好处?为什么需要反射?

来源:微?银行、三?重工、上海?和网络、上海明?物联网、阿??巴芝?信用项目组

反射机制

反射的使用场合和作用、及其优缺点

来源:?软国际、君?科技、吉?航空

反射机制

实现 Java 反射的类有什么?

来源:君?科技、北京?蓝

反射相关的主要 API

反射是怎么实现的?

来源:上海立?网络

Class 说起。JVM 类加载机制

Class 类的作用?生成 Class 对象的方法有哪些?

来源:顺?

作用:反射的源头。

获取 Class 类的实例(四种方法)

Class.forName("全路径") 会调用哪些方法?会调用构造方法吗?加载的类会放在哪?

来源:上?银行外包

Class.forName() 会执行执行类构造器 <clinit>() 方法(class init,类初始化、类装载)。

不会调用构造方法

加载的类放在方法区。

类加载流程

来源:汇??通、同?顺、凡?科技

类的加载与 ClassLoader 的理解

说一下创建对象的几种方法?

来源:华油???集团、?科软、凡?科技、?云网络

如何找到对象的 Class

来源:?度

  • 对象.getClass()
  • 类.Class

Java 反射创建对象效率高还是通过 new 创建对象的效率高?

来源:三?重工

new 效率高

如何利用反射机制来访问一个类的方法?

来源:神州??软件

  1. 通过 Class 的实例调用 getDeclaredMethod(String methodName, Class... args),获取指定的方法
  2. setAccessible(true):确保此方法是可访问的
  3. 通过 Method 实例调用 invoke(Object obj, Object... objs),即为对 Method 对应的方法的调用。
    • invoke() 的返回值即为 Method 对应的方法的返回值
    • 特别的:如果 Method 对应的方法的返回值类型为 void,则 invoke() 返回值为 null

说一下 Java 反射获取私有属性,如何改变值?

来源:阿??巴?麻信用项目组

  1. 通过 Class 实例调用 getDeclaredField(String fieldName),获取运行时类指定名的属性
  2. setAccessible(true):确保此属性是可以访问的
  3. 通过 Filed 类的实例调用 get(Object obj) 获取或 set(Object obj, Object value) 设置。

针对于核心源码的 API,内部的私有的结构在 JDK17 中就不可以通过反射调用了。