关于Java反射
来源:6-4 什么是反射
weixin_慕仙7241916
2022-08-16
老师您好,我对于Java的反射原理还是有点迷茫。
想请问Java反射最主要的目的为何呢? (或是最具价值的实作为何?)
问题1. 反射是为了是满足"使用xml配置文件来实现动态语言的特性"?
问题2. 反射的目的是获取不同的类中的各种方法或属性,重新建构出一个新的类? (增加代码的复用)
问题1是我目前对于Java反射的应用的基本理解,而本次课程<6-4甚么是反射>看起来是透过问题2的方式来实现反射,但问题2获取一个类的方法也必须使用rc.newInstence来获取一个已经定义好的class结构,这里与直接new一个类有很大的区别吗?
并且应该有许多方式都可以做到与问题2相同的获取class方法来完成目标实现,那这个反射功能存在的必要性在哪呢?
写回答
1回答
-
同学好,
问题1:满足xml配置只是其中之一,我理解最关键在于反射能够让我们更灵活去写出更通用的算法,试想如果想要动态地将某些实现类实例注入到接口里,而且是要在运行时候通过字面量传入,并设置一系列条件最终才选出某个类,这种方法要写得特别通用,通常就离不开反射了,一个很简单的例子,就是当代码出现很多if elseif之类的情况,就会变得难以维护,如果我们设置成一个hashMap形式,每个key对应一种策略实现类,这样就能封装这种if else的情况,简化代码。
问题2 同上,再补充一点,就是主要是更优雅去实现,因为很多实现方案都是编译时依靠硬编码来实现。
112022-08-17
相似问题