2014-09-22 3 views
1

Я создаю API-класс для школы для специального XML-писателя. У меня есть:Создание переменных с именами строк

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]) 

Я хочу, чтобы создать элемент с таким же именем данных [я].

Я использую dom4j XML .jar в этом, кстати.

Я слышал о чем-то, называемом хэшмапом, и если это правильный метод, попросил бы кто-нибудь объяснить, как его использовать.

+0

Пожалуйста, следуйте соглашениям по кодированию Java. Взгляните на http://stackoverflow.com/questions/23738010/java-print-string-c-equivalent –

+0

взгляните на http://stackoverflow.com/questions/19153930/how-to-create-java -beans-dynamically – Leo

ответ

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, если вы предпочитаете.

+0

Спасибо, что я хотел haha ​​youre легенда xoxo – Piemansam5

+0

Обратите внимание, что первый пример был обновлен (ошибка компиляции, данные уже определены), и если вам действительно не нужен массив '_data', используйте первое решение. – NoDataFound

3

Нет. Просто вы не можете этого сделать. Вы не можете динамически создавать/получать доступ к переменной с ее именем. С Reflection вы можете получить доступ, но не можете создать.

Я думаю, карта может сделать задачу здесь так же, как

map.put(data[i],root.addElement(data[i]); 

Выше только пример кода, чтобы пролить некоторый свет.

+0

rightyo thanks alot есть ли какой-либо другой метод, который вы предложили бы сделать? – Piemansam5

+0

@ Piemansam5 обновить сообщение с некоторым возможным решением. Это то, что вы ищете? –

Смежные вопросы