繁体   English   中英

使用字符串名称访问Java对象的成员变量

[英]Access Java Object's Member Variable with String name

我试图弄清楚java中是否有与javascript中类似的方式来使用字符串而不是使用显式的点符号来获取对象成员变量。

例如,在javascript中,我可以通过以下方式访问elements成员变量:

someObj["memVarName"] and someObj.memVarName 

那么,有什么办法可以让我不必编写特定的方法来执行此操作?

就像是

someObj.getClass().getField("memVarName").get(someObj)

但是,通常,在Java中,当您倾向于使用反射时,使用Map或接口可能会更好地解决您要解决的问题。

从句法上讲-不。 Java不是像JavaScript那样松散地键入的,并且开发人员在前者中对对象字段的操作没有像在后者中通常那样自由。

但是,您可以深入思考Reflection API,并且-知道特别感兴趣的getter / setter的名称-您可能想在这里看看如何使用反射定义动态的setter和getter? ,但您乍一看可能会注意到-这不值得麻烦。

哈希表对象将允许类似的功能。

本示例创建数字哈希​​表。 它使用数字名称作为键:

Hashtable<String, Integer> numbers
 = new Hashtable<String, Integer>();
numbers.put("one", 1);
numbers.put("two", 2);
numbers.put("three", 3);

要检索数字,请使用以下代码:

Integer n = numbers.get("two");
if (n != null) {
  System.out.println("two = " + n);
 }

取自http://docs.oracle.com/javase/7/docs/api/java/util/Hashtable.html

您可以使用BeanUtils(一个apache项目),虽然不像JavaScript这样的语言那么简洁,但是它比使用Reflection API的痛苦要小。

Google的Guava库还提供了Reflections API的包装器,以允许这种“命名访问”

否则,您将无法使用核心Java中的Reflection和Bean API。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM