2013-10-20 115 views
1

我对Java和Android开发非常陌生。动态访问java对象变量

我有一种情况,我需要使用XML文档中的数据填充对象。 XML中的一些节点名称没有任何标准化,所以我创建了一个HashMap,其中的键是节点名称,值是它需要分配给的变量。

在PHP代码看起来是这样的(在基本条件):

$array = new Array("somenodename" => "firstname", "someothernodename" => "lastname"); 
$object = new Person(); 
$object->{$array['somenodename']} = "Whatever the XML node value was"; 

在Java中我已经得到了尽可能:

从对象我需要填充:

public String firstname; 
public String lastname; 

public static Map getHashMap(){ 
    Map<String, String> map = new HashMap<String, String>(); 
    map.put("somenodename", "firstname"); 
    map.put("someothernodename", "lastname"); 

    return map; 
} 

从填充对象的类中假设somenode和someothernode是dymanic:

Person person; 
Map personMap = person.getHashMap(); 
if(personMap.containsKey("somenodename")){ 
    person.[personMap.get("somenodename")] = "James"; 
} 
if(personMap.containsKey("someothernodename")){ 
    person.[personMap.get("someothernodename")] = "Bond"; 
} 

是否有将值分配给变量名为变量的类变量?

+1

反射是你的朋友。 –

回答

2

这就是所谓的Reflection

假设你想从Person调用方法myMethod(String s)

Person p = new Person(); 
Class<Person> clazz = p.getClass(); 
Method m = clazz.getMethod("myMethod", String.class); 
m.invoke(p, "my string argument"); 
+0

美丽,谢谢。 –