写作是门手艺,笑对需要勇气。
写下这个题目的时候,我压力比较大,怕的是费力不讨好。因为反射这一块,对于大多数人员而言太熟悉了,稍微不注意就容易把方向写偏,把知识点写漏。但是,我已经写了注解和动态代理这两个知识点的博客,阅读量还可以,这两个知识点是属于反射机制中的,现在对于注解和动态代理息息相关的反射知识基础我倒是退缩了,所以说看起来很普通的东西,其实真的要一五一十地把它的门道说才方显功力。我们经常说一个人半吊子二把刀,说起来头头是道,做起来却不是那么一回事。
王阳明说知行合一,很多人只让自己停留在知的阶段,没有行,或者说行的能力薄弱,因为没有行来**“事上练”,所以就没有办法不停检测自己的“知”是否正确,也就无法“致良知”**,这就是王阳明心学,有兴趣的同学可以自行去阅读相关的书籍。听不懂的也没有关系,大体意思就是实践出真理,理论和实践相结合。对于 Java 反射这类基础知识,很多同学看了一遍就觉得懂了,其实很多时候还是没有懂,只是跟着书本被动阅读,你会产生一种错觉,这种错觉就是你以为你懂了,其实,你没有。如何检测呢?很简单,你在阅读某本书,某个章节之后,你合上书本,闭上眼睛,你试着回想一下,你刚才看过的内容,你能记住多少?别不信,你现在就可以找一本书试一试。
讲了这么多,我的观点其实很简单,就是认真对待你的一技之长,尽可能把每个知识点真正弄懂,带着自己的思考去学习新的概念,然后适时做一些练习来检测和巩固。
下面,让我们一起认真对待之前可能没有多在意的基础知识之一—— Java 反射。
注意,这篇文章因为内容太多,所以篇幅非常长。中途受不了的同学可以回到目录跳转到感兴趣的小节进行学习。
文章目录
向一个门外汉介绍反射
反射是什么?
官方文档上有这么一段介绍:
Reflection is commonly used by programs which require the ability to examine or modify the runtime behavior of applications running in the Java virtual machine. This is a relatively advanced feature and should be used only by developers who have a strong grasp of the fundamentals of the language. With that caveat in mind, reflection is a powerful technique and can enable applications to perform operations which would otherwise be impossible.
我来翻译一下:反射技术通常被用来检测和改变应用程序在 Java 虚拟机中的行为表现。它是一个相对而言比较高级的技术,通常它应用的前提是开发者本身对于 Java 语言特性有很强的理解的基础上。值得说明的是,反射是一种强有力的技术特性,因此可以使得应用程序突破一些藩篱,执行一些常规手段无法企及的目的。
我再通俗概括一下:反射是个很牛逼的功能,能够在程序运行时修改程序的行为。但反射是非常规手段,反射有风险,应用需谨慎。
本文详细介绍了Java和Android开发中的反射机制,从入门到深入,涵盖Class的获取、内容清单、Field、Method、Constructor的操控,以及反射在数组和枚举中的应用。通过实例解析反射的使用,强调了反射在开发中的风险和注意事项,适合有一定Java基础的学习者。
订阅专栏 解锁全文
1278

被折叠的 条评论
为什么被折叠?



