动态访问java对象变量

时间:2013-10-20 15:21:56

标签: java android

我是Java和Android开发的新手。

我有一个案例需要使用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";
}

无论如何为变量名为... variable?

的类变量赋值

1 个答案:

答案 0 :(得分:2)

它被称为Reflection

假设您要从myMethod(String s)调用方法Person

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