反思有什么问题?

时间:2011-07-29 08:51:45

标签: java reflection eclipse-rcp

我正在开发Eclipse RCP应用程序。有人告诉我,UI部分将由设计师(?)使用Window Builder PRO创建,因此我必须为设计师创建的每个视图创建业务逻辑。

我的第一个想法是为每个视图创建一个Controller类,并在Reflection的帮助下处理应用程序逻辑(我不知道设计器将创建什么样的Widgets)。我认为这将是动态的,因此欢欣鼓舞,但我们的领导告诉我,我们不会使用Reflection。

我听到一个非常简短的解释对我没有任何意义,所以我的问题是:

为什么使用Reflection被视为坏/不可维护?

1 个答案:

答案 0 :(得分:6)

Java是一种强类型语言,有利有弊。对于所有缺点,它为您提供了非常好的编译时检查。在编译时发现的错误/错误是最便宜的查找和修复。

反射是运行时的事情。你不能让编译器检查你使用反射做的任何事情,因此如果你使用反射你会失去很多java的优点。具体来说,您可以编写在运行时编译但爆炸的代码。有时用于反射类型代码的术语是“字符串类型” - 您使用方法(字符串)的名称而不是引用实际方法。

当然使用反射,但每当你使用它时,请记住你正在颠覆java的力量。在你的情况下广泛使用它可能实际上是好的,只要你的单元测试覆盖足够的情况,让你相信你使用它是安全的。如果实际使用它的代码是一个相当小的“实用程序”代码基础,我会批准它的使用。