面试---反射


☺ 面试聊聊反射机制?

Java的反射机制:是指在程序的运行状态中,可以构造任意一个类的对象,可以了解任意一个对象所属的类,可以了解任意一个类的成员变量和方法,可以调用任意一个对象的属性和方法。这种 动态获取程序信息以及动态调用对象的功能 称为Java语言的反射机制。



☺ 聊一下反射的原理?

java程序运行前,先会将java程序 编程 生成 .class 字节码文件,在程序运行过程中,使用到某个类,内存还没存在该类,那么 虚拟机就会先将该类加载到内存同时, 虚拟机会产生一个 java.lang.class 对象,代表该字节码文件。

通过Class 对象可以得到大量的Method、Constructor、Filed 等对象,这些对象分别代表该类所包含的方法、构造器、属性等等;反射的工作原理就是通过这些对象来执行实际的功能,例如调用方法、创建实例等等。



☺ 聊一下反射的优缺点?

优点:

  • 增加了程序的灵活性:例如Spring框架中,利用xml 配置文件解析bean的过程,就是反射的典型应用场景。
  • 增加了程序的拓展性:可以在不知道运行哪一个类的情况下,还能获取到类的信息,去创建对象以及操作对象;在程序中我们无须将对象的类型硬编码写死,可以更加方便地实现拓展,降低耦合度。

缺点:

  • 更容易出现运行错误:使用显示的类和接口,编译器可以帮我们做类型检查,但是使用反射却是需要等到程序运行才知道对象的类型
  • 性能比较低:反射是一种解释操作, 在访问字段和调用方法前,需要先获取到Filed、Method ,性能相对会低一些。
  • 安全性问题:通过反射可以修改任意的私有字段和访问私有方法破坏了类的封装,可能会出现逻辑错误等安全隐患。
posted @   一乐乐  阅读(40)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 我干了两个月的大项目,开源了!
· 推荐一款非常好用的在线 SSH 管理工具
· 千万级的大表,如何做性能调优?
· 聊一聊 操作系统蓝屏 c0000102 的故障分析
· .NET周刊【1月第1期 2025-01-05】
点击右上角即可分享
微信分享提示