序言
人与机器最大的区别之一,在于人能够面对变化作出判断。
天气变冷,我们会添衣;道路拥堵,我们会绕行。
同样的事情,因为对象不同、情景的不同,我们往往会作出不同的选择,这就是王羲之说的情随境转。
程序如果想适应不断变化的需求,就不能永远只执行固定的逻辑,需要具备一定的“动态能力”,需要学会面对变化,需要学会判断。
那么,程序是否也可以做到这一点?
虽然程序本身不会思考,但它可以通过机制认识自身、获取信息,并根据运行时的情况作出不同的行为。
在 Java 世界里,这种能力有一个名字:反射。
什么是反射?
在计算机科学中,反射是指计算机程序在运行时(Run time)可以访问、检测和修改它本身状态或行为的一种能力。用比喻来说,反射就是程序在运行的时候能够“观察”并且修改自己的行为。