Java反射机制有什么作用,有哪些使用场景

参考答案

1.  Java反射机制的作用

通过反射,可以使程序代码访问装载到 JVM 中的类的内部信息,获取已装载类的属性信息、方法信息。

Java反射在运行时:

  • 可以判定任意一个对象所属的类;
  • 可以构造任意一个类的对象;
  • 可以判定任意一个类所具有的成员变量和方法;
  • 可以调用任意一个对象的方法;
  • 可以生成动态代理。

2.   Java反射常见使用场景

反射主要用于底层的框架中,Spring 中就大量使用了反射。

例如:

  • 用 IoC 来注入和组装 bean;
  • 动态代理、面向切面、bean 对象中的方法替换与增强,也使用了反射;
  • 定义的注解,也是通过反射查找。

使用场景一

  • 在spring中,将所有的类Bean交给spring容器管理,无论是XML配置Bean、还是注解配置,从容器中获取Bean来依赖注入时,容器会读取配置,而配置中给的就是类的信息,spring根据这些信息,需要创建那些Bean,spring就动态的创建这些类。
  • 在struts2的struts.xml中配置action,也是通过反射调用action。

使用场景二

  • 在创建数据库链接时,代码Class tc = Class.forName(“com.java.dbtest.TestConnection”),告诉了JVM去加载这个类,加载过程是在程序执行过程中动态加载的。
  • 通过类的全类名,让JVM在服务器中找到并加载这个类,如使用别的数据库,就需要换一个类。如采用传统写死的方法创建,就要修改原来类的代码。对于反射来说,只是传入的参数变成了另一个而已,它可以通过修改配置文件,而不是直接修改代码。

使用场景三

  • 有两个程序员,一个程序员在写程序的时候,需要使用第二个程序员所写的类,但第二个程序员并没完成他所写的类。
  • 第一个程序员的代码是否可以通过编译?这是不能通过编译的。
  • 利用Java反射的机制,让第一个程序员在没有得到第二个程序员所写的类的时候,来完成自身代码的编译。如果这个类还没有,获取时会获取不到,但不会导致编译错误,以及程序的崩溃。

使用场景四

  • 使用 IDE(如 Eclipse\IDEA)时,输入一个队长或者类并向调用它的属性和方法,一按 (“.”)点号,编译器会自动列出它的属性或方法,这里就会使用反射。

以上,是Java面试题【Java反射机制有什么用】的参考答案。

 

输出,是最好的学习方法。

立即行动,在评论区记录下你的问题、笔记或补充~

—end—

0 条回复 A文章作者 M管理员
    暂无讨论,说说你的看法吧