如何在java中为类创建动态对象?

时间:2017-04-23 05:40:56

标签: java xml object reflection

例如:

Element elementInclude1 = doc.createElement("include");
elementMethods.appendChild(elementInclude1);
elementInclude1.setAttribute("name", "T1");

Element elementInclude2 = doc.createElement("include");
elementMethods.appendChild(elementInclude2);
elementInclude2.setAttribute("name", "T2");

Element elementInclude3 = doc.createElement("include");
elementMethods.appendChild(elementInclude3);
elementInclude3.setAttribute("name", "T3");
....

在上面的示例中,创建的对象数(elementInclude1,elementInclude2,..)是动态已知的。

在运行时中不知道所需的对象,使用该值在每次迭代中创建的循环新对象中迭代。我怎样才能做到这一点。

需要在运行时动态创建对象elementInclude1,elementInclude2,elementInclude3,...

为了更好地理解,我在下面的代码中使用了一些错误的做法。

String noOfObj = 5;
for(int i = 1; i<=noOfObj; i++)
{
Element elementInclude+**noOfObj** = doc.createElement("include");
elementMethods.appendChild(elementInclude+**noOfObj**);
elementInclude+**noOfObj**.setAttribute("name", "T1");
}

1 个答案:

答案 0 :(得分:2)

    int noOfObj = 5;
    //create an array to hold elements
    Element[] elememtsArray = new Element[noOfObj];

    for(int i = 1; i<=noOfObj ; i++){

        Element element = doc.createElement("include");
        elememtsArray[i] = element;
    }

或者,如果元素数量未知,请使用列表

    ArrayList<Element> elementsList = new ArrayList<>();

    for(int i = 1; i<= 6 ; i++){//6 is an arbitrary num for demo

        Element element = doc.createElement("include");
         elementsList.add(element);
    }

或者,如果您需要参考名称,请使用地图

    Map<String, Element> elementsMap= new HashMap();
    for(int i = 1; i<=7 ; i++){ //7 is an arbitrary num for demo

        Element element = doc.createElement("include");
        String elementName = "elementInclude"+ i;
        elementsMap.put(elementName, element);
    }