我正在构建一个客户端的应用程序,我需要能够通过字符串引用字段值,即用户使用字符串来定义他们想要更改值的字段,这是抽象框架的一部分,所以从技术上讲,我不知道他们想要改变的领域的名称。当然我可以使用哈希映射来做到这一点,但我正在考虑使用java反射,因为这允许字段保留为对象的字段而不是被编码为哈希映射的值。我已经将反射用于我自己的个人工作,但我想知道使用Java反射实际上是不好的做法,我应该坚持使用hashmap方法。
(也赞赏解决所述设计问题的任何其他建议)
由于
答案 0 :(得分:9)
问题本身就是基于意见的,虽然我相信大多数人会同意你不能只说“反思是坏事”。有时这是唯一的方法,这就是许多图书馆使用反射的原因。有时这不是唯一的方法,但解决方法会更糟。有时它并不是唯一的方式,也不是最简单的方法,但是开发人员对反思思维的力量感到非常惊讶。
除了最后一个,有充分的理由将反思视为一种解决方案。
答案 1 :(得分:0)
个人反思让我感到难过,根据我的经验,几乎总是有一种更好的方法。在您描述的问题中,基于字符串设置变量我会考虑采用您的哈希映射思想,后者将通过字符串键引用变量,这似乎与您所描述的完全一样。如果您需要引用不存在的值的能力,则还可以包括工厂方法,以在不存在键的情况下创建变量,然后将其添加到映射中;如果要包装这些对象,则它们将通过引用传递,以避免出现问题。描述,但这取决于实现(例如,如果您引用的是原语,则使用Integer类等进行自动装箱)在一起,这将允许更紧密和定义良好的实现,而不是在此处和各处反映值。道歉,以防反射偏见!希望这会有所帮助。