我试图弄清楚java中是否存在类似的方式,因为在javascript中使用字符串而不是使用显式点表示法来获取对象成员变量。
对于javascript中的示例,我可以通过以下方式访问元素成员变量:
someObj["memVarName"] and someObj.memVarName
如果没有我必须编写一个特定的方法来执行此操作,有没有任何给定的方法?
答案 0 :(得分:1)
像
这样的东西someObj.getClass().getField("memVarName").get(someObj)
但是,通常情况下,在Java中,当您想要使用反射时,您尝试解决的问题可能更好地使用Map或接口来解决。
答案 1 :(得分:1)
语法上 - 没有。 Java并不像JavaScript那样松散地输入,开发人员在前者的对象字段上操作的自由度与后者通常做的一样多。
然而,你可以深入了解Reflection API并且 - 知道特别感兴趣的getter / setter的名字 - 你可能想看看How to define dynamic setter and getter using reflection?,但是你应该在第一眼看到它 - 这不值得麻烦。
答案 2 :(得分:0)
哈希表对象允许类似的功能。
此示例创建数字哈希表。它使用数字的名称作为键:
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
答案 3 :(得分:0)
你可以使用BeanUtils(一个apache项目),虽然不像JavaScript那样整洁,但它比使用Reflection API要痛苦得多。
Googles Guava库还提供了一个围绕Reflections API的包装器,以允许这种&#34;命名访问&#34;
如果你不熟悉核心Java中的Reflection和Bean API。