当前位置: 首页 > 图灵资讯 > java面试题> 金三银四精选java面试题-反射的应用场景有哪些?反射有什么优缺点?

金三银四精选java面试题-反射的应用场景有哪些?反射有什么优缺点?

来源:图灵教育
时间:2023-11-28 10:27:53
 

反射的应用场景有哪些?反射有什么优缺点?

应用场景

反射是Java框架的灵魂技术,很多框架都使用了反射技术,如SpringMybatis,Hibernate等。

JDBC 的数据库的连接

在JDBC连接数据库中,一般包括加载驱动,获得数据库连接等步骤。而加载驱动,就是引入相关Jar包后,通过Class.forName()加载数据库的驱动程序。

Class.forName("com.MySQL.cj.jdbc.Driver");

xml或properties等配置文件加载

Spring 通过 XML 配置模式装载 bean,也是反射的一个典型例子。

装载过程:

  • 将程序内XML 配置文件加载入内存中
  • java类解析xml或者properties里面的内容,得到对应实体类的字节码字符串以及相关的属性信息
  • 使用反射机制,得到Class实例
  • 动态配置实例的属性

这样做当然是有好处的不用每次都去new实例了,并且可以修改配置文件,比较灵活。

反射的优点:

动态性:反射提供了在运行时动态地探索和操作类的能力。它允许我们在运行时获取类的信息、创建对象、调用方法和修改字段的值,从而使程序更加灵活、可扩展和动态。

适应复杂环境::反射可以应对一些复杂的场景,如在插件化系统中根据配置文件加载类、动态代理、识别和处理注解等。

反射的缺点:

性能问题:由于反射涉及到动态解析和调用,所以它通常比直接调用代码性能较低。反射需要进行额外的检查和处理,可能会导致性能下降。

安全问题:反射可以绕过访问控制限制,例如访问私有方法和字段。这可能会导致安全隐患,因此在使用反射时需要小心处理,并确保只在必要情况下使用