如何根据条件在运行时访问特定的类属性?

时间:2015-08-24 08:08:45

标签: java class object

我是Java的初学者。请原谅我这个问题太愚蠢了。 我在变量comparisonEntity中从用户获取字符串输入。如果输入是" xyz"然后我必须根据这个属性比较所有实例。 (类中存在相同的名称属性)如果输入是" abc"然后我必须根据这个属性比较所有实例。 另外,我不想在if和else部分编写冗余代码。 所以有类似的东西 对象名" comparisonEntity" " comparisonEntity"将被相同值的属性名称替换。

1 个答案:

答案 0 :(得分:0)

如果我理解你的问题,我认为你可以通过使用反射实现这一点。

所以你有一个类的实例,还有一个输入字符串:

Test    instance    =   new Test();
String  input       =   "nameOfSomeField";

您可以获得与输入的字符串对应的Field

try {
    Field   field       = instance.getClass().getField(input);
} catch (NoSuchFieldException ex) {
    // Field doesn't exist
}

然后你可以做一些事情,比如获得这样的领域的价值:

Object value = field.get(instance);

请注意,field.get()会返回Object。你需要施展它。