1.2 程序员 George 的任务
George 是 Wildlife 组件公司的程序员,在其日常工作中,George 面临许多挑战,比如前面提到的。贯穿本书,我们将以 George 的视角发现实现反射方案的优势。
在一个项目中,George 所在团队要开发用户界面,团队使用了几种标准的 Java 控件,一些是自己研发的,一些是开源的,一些是第三方授权使用的。所有这些组件被集成在一起组成应用的用户界面。
每个组件都提供了 setColor 方法,该方法接受一个 java.awt.Color 参数。但这些组件的并没有继承关系,公用父类只有 java.lang.Object,所以他们不能使用一个相同的类型调用 setMethod 方法。
这给 George 的团队出了一个难题,他们只是想调用 setColor 方法,并不关心组件的精确类型。该场景看似是人为捏造的,但浏览 JDK API 之后,就会发现其中很多类提供了相同的方法,但是并没有共同接口,与上面的场景类似。