【发布时间】:2016-04-15 10:14:29
【问题描述】:
我正在为客户构建一个应用程序,我需要能够通过字符串引用字段值,即用户使用字符串来定义他们想要更改哪个字段的值,这是抽象框架的一部分,所以从技术上讲,我不知道他们想要更改的字段的名称。当然,我可以使用哈希映射来做到这一点,但我正在考虑使用 java 反射,因为这允许字段保留为对象的字段,而不是将值编码到哈希映射中。我在自己的个人工作中使用过反射,但我想知道使用 Java 反射是否真的是不好的做法,我应该坚持使用 hashmap 方法。
(对于解决所描述的设计问题的任何其他建议也表示赞赏)
谢谢
【问题讨论】:
-
我改写您的问题:“操纵对象是一种不好的做法,因此它们不会按预期工作吗?”我想你可以回答这个问题。
-
erm 不,它略有不同,因为应用程序实际上是基于设置要更改的对象的值。问题是它们需要通过它们的字符串名称来引用
-
在 Android 中这是个坏主意,因为 proguard 不能解决这个问题。
-
尽可能避免反射,除非它是你的最后选择。
-
看来你已经收到了大部分警告,所以我只是补充一下,Sun 没有为 Java 语言添加反射,只是为了让我们能够大开眼界(或者也许是在脚下开枪)。有时它只是适合这项工作的工具。很难从这个问题中说出来,不管你的情况是否如此。
标签: java design-patterns reflection design-principles