创建具有字符串名称的变量

时间:2014-09-22 12:05:19

标签: java variables

我正在为自定义XML编写器为学校制作一种API。我有:

public Document CreateDocument(int loops, int attr, String data[], String dataattr[][][]) {
    Document BetterDoc = DocumentHelper.createDocument();
    Element root = BetterDoc.addElement("root");
    for (int i = 0; i < loops; i++) {
        Element(Object) data[i] = root.addElement(data[i])
        for (int i2 = 0; i < attr; i++) {
            .addAtribute(dataattr[i][i2][0], dataattr[i][i2][1])
        };
    }

    return BetterDoc;
}

我想要帮助的一行是:

Element(Object) data[i] = root.addElement(data[i])

我想创建一个与数据名称相同的元素[i]。

顺便说一下,我正在使用dom4j XML .jar。

我听说过一个叫做hashmap的东西,如果这是正确的方法,请有人解释一下如何使用它。

2 个答案:

答案 0 :(得分:3)

没有。只是你无法做到这一点。您无法使用其名称动态创建/访问变量。使用Reflection,您可以访问,但无法创建。

我猜,地图可以像

一样完成任务
map.put(data[i],root.addElement(data[i]);

上面只是一个示例代码,可以提供一些亮点。

答案 1 :(得分:0)

与Groovy,PHP或Javascript不同,您无法创建动态变量,但您可以创建数组或重用现有变量:

使用现有变量:

public Document CreateDocument(int loops, int attr, String data[], String dataattr[][][]) {
    Document BetterDoc = DocumentHelper.createDocument();
    Element root = BetterDoc.addElement("root");
    for (int i = 0; i < loops; i++) {
        Element _data = root.addElement(data[i]);
        for (int i2 = 0; i < attr; i++) {
            _data.addAtribute(dataattr[i][i2][0], dataattr[i][i2][1])
        };
    }    
    return BetterDoc;
}

使用数组:

public Document CreateDocument(int loops, int attr, String data[], String dataattr[][][]) {
    Document BetterDoc = DocumentHelper.createDocument();
    Element root = BetterDoc.addElement("root");
    Element[] _data = new Element[loops];
    for (int i = 0; i < loops; i++) {
        _data[i] = root.addElement(data[i]);
        for (int i2 = 0; i < attr; i++) {
            _data[i].addAtribute(dataattr[i][i2][0], dataattr[i][i2][1])
        };
    }    
    return BetterDoc;
}

如果您愿意,可以使用ArrayList替换数组。