1

我是 Java 新手,正在尝试弄清楚如何为自定义对象动态设置属性值。我正在使用一个 XML 解析器,它循环遍历 XML 文件中的元素,我只是想将字符串设置为我的临时值。

public MyObject tempObj; //gets instantiated before child elements
public String tempValue; //gets set before each loop

public void stepThroughChildElement(string elementName) {
    switch (elementName) {
        case "Id":
            tempObj.Id = Integer.parseInt(tempValue);
            break;
        case "Version":
            tempObj.Version = Float.parseFloat(tempValue);
            break;
        default:
            //something like this   
            //tempObj.setProperty(elementName, tempValue);
            //or
            //tempObj[elementName] = tempValue;
            break;
    }

}

在 JavaScript 中,我只使用第二个示例Object["property"] = value;,但显然 Java 不能那样工作。我也找到了这个Properties对象,但我不知道它是否相关。

4

3 回答 3

1

你为什么不使用地图

Map map = new HashMap();
map.put(key, value);
于 2013-09-16T13:07:29.850 回答
0

你可以做这样的事情

tempObj.put("key", new Object());  // use HashtMap's put method
tempObj.setProperty("key", "value"); // use Proerties' setProperty method
于 2013-09-16T13:09:49.590 回答
0

由于 Java 是静态类型的,因此您不能只添加这样的属性。您必须为您的对象提供 Map<String, String> 的其他属性。

If the object already has the properties defined, you could hard-code each one or use java.reflection to do it more dynamically. Use code assist and look at all of the methods available to you after you call tempObj.getClass(). You might be able to access the fields directly or you might have to look up and call the setter methods.

于 2013-09-16T13:13:05.290 回答