企业真题
对反射了解吗?反射有什么好处?为什么需要反射?
来源:微?银行、三?重工、上海?和网络、上海明?物联网、阿??巴芝?信用项目组
反射的使用场合和作用、及其优缺点
来源:?软国际、君?科技、吉?航空
实现 Java 反射的类有什么?
来源:君?科技、北京?蓝
反射是怎么实现的?
来源:上海立?网络
从 Class
说起。JVM 类加载机制
Class
类的作用?生成 Class
对象的方法有哪些?
来源:顺?
作用:反射的源头。
Class.forName("全路径")
会调用哪些方法?会调用构造方法吗?加载的类会放在哪?
来源:上?银行外包
Class.forName()
会执行执行类构造器 <clinit>()
方法(class init,类初始化、类装载)。
不会调用构造方法
加载的类放在方法区。
类加载流程
来源:汇??通、同?顺、凡?科技
说一下创建对象的几种方法?
来源:华油???集团、?科软、凡?科技、?云网络
如何找到对象的 Class
?
来源:?度
对象.getClass()
类.Class
Java 反射创建对象效率高还是通过 new
创建对象的效率高?
来源:三?重工
new
效率高
如何利用反射机制来访问一个类的方法?
来源:神州??软件
- 通过
Class
的实例调用getDeclaredMethod(String methodName, Class... args)
,获取指定的方法 setAccessible(true)
:确保此方法是可访问的- 通过
Method
实例调用invoke(Object obj, Object... objs)
,即为对Method
对应的方法的调用。invoke()
的返回值即为Method
对应的方法的返回值- 特别的:如果
Method
对应的方法的返回值类型为void
,则invoke()
返回值为null
说一下 Java 反射获取私有属性,如何改变值?
来源:阿??巴?麻信用项目组
- 通过
Class
实例调用getDeclaredField(String fieldName)
,获取运行时类指定名的属性 setAccessible(true)
:确保此属性是可以访问的- 通过
Filed
类的实例调用get(Object obj)
获取或set(Object obj, Object value)
设置。
针对于核心源码的 API,内部的私有的结构在 JDK17 中就不可以通过反射调用了。