关于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回答

翔仔

2022-08-16

同学好,

问题1:满足xml配置只是其中之一,我理解最关键在于反射能够让我们更灵活去写出更通用的算法,试想如果想要动态地将某些实现类实例注入到接口里,而且是要在运行时候通过字面量传入,并设置一系列条件最终才选出某个类,这种方法要写得特别通用,通常就离不开反射了,一个很简单的例子,就是当代码出现很多if elseif之类的情况,就会变得难以维护,如果我们设置成一个hashMap形式,每个key对应一种策略实现类,这样就能封装这种if else的情况,简化代码。

问题2 同上,再补充一点,就是主要是更优雅去实现,因为很多实现方案都是编译时依靠硬编码来实现。

1
1
weixin_慕仙7241916
感谢解答!
2022-08-17
共1条回复

剑指Java面试-Offer直通车 百度资深面试官授课

招聘季即将到来,让百度资深面试官来为你的高薪Offer保驾护航

8427 学习 · 1870 问题

查看课程