gpt4 book ai didi

java - 动态访问java对象变量

转载 作者:行者123 更新时间:2023-11-29 21:31:06 25 4
gpt4 key购买 nike

我对 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 是动态的,从类填充对象:

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

是否可以为变量名称为...变量的类变量赋值?

最佳答案

它叫做 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");

关于java - 动态访问java对象变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19479126/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com