在Java中取消引用字段名以对其进行验证

在Java中取消引用字段名以对其进行验证,java,spring,Java,Spring,在PHP(当然是一种解释语言)中,我可以在运行时取消引用字段名,例如下面的'source'和'value',并使用source和value指向的这两个字段的值 {$key['source']}[LANGUAGE_NONE][0]['value']; 在Java中是否有类似的工具可以这样做?我需要验证bean的一些属性,并对其执行各种检查。我不想硬编码逻辑,而是想循环一个SQL字段名表,并对字段执行指定的验证。例如,如果我在数据库中有值“email”,我会选择下面的属性,并根据数据库列中的规则对

PHP
(当然是一种解释语言)中,我可以在运行时取消引用字段名,例如下面的
'source'
'value'
,并使用source和value指向的这两个字段的值

{$key['source']}[LANGUAGE_NONE][0]['value'];
Java
中是否有类似的工具可以这样做?我需要验证bean的一些属性,并对其执行各种检查。我不想硬编码逻辑,而是想循环一个
SQL
字段名表,并对字段执行指定的验证。例如,如果我在数据库中有值
“email”
,我会选择下面的属性,并根据数据库列中的规则对其进行验证:

String email;
我将有许多bean和许多字段,这就是为什么我想到这种方法。我对设计没有发言权:(


我想的另一个选项是使用
Spring验证
,但在提交
Spring表单Bean
之前,似乎没有一种方法可以触发它。也许有另一种方法可以触发它?

我想您是说希望将属性的名称存储在数据存储中,并在运行时查询属性。您所描述的构造最接近Java中的映射-一个键/值对,并且没有任何东西可以阻止您访问以这种方式存储的数据,例如
myMap.get(“myproperty”);
。问题是将所有对象建模为映射不是很面向对象

另一个选项是使用反射和约定。因此,数据库中名为“source”的属性将由名为“getSource()”的方法访问。这类似于JavaBeans


这就是你的意思吗?请考虑重新讨论一下你的问题,因为对我来说还不太清楚。如果我理解你需要检查一些字段而不知道数据库中的名字。在这种情况下,你可以从数据库中获得列列表,并且你有你需要的值。把它们放在像哈希表一样的东西中。你完成了。不幸的是,我没有选择将它们从标量更改为集合中的一组字段。相信我,如果这么简单,我会这么做的。因此,我无法理解你的问题。对不起。