参考答案
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—