如何使用两种不同的泛型类型复制列表?

时间:2014-02-03 09:46:54

标签: java list collections

我在一个课程中有以下代码

List<String> list = new ArrayList<String>(objType.getParameters());

要将列表复制到列表中,您可以这样做:List<String> list = new ArrayList<String>(objType.getParameters());

但是如果objType.getParameters() List是String的话。现在我的情况不是这样,而是一个Parameter对象。

public class Object_type {

    public String object_type;
    public Property properties;
    private List<Parameter> parameters;
    public List<Restriction> restriction;

    public List<Parameter> getParameters() {
        return parameters;
    }

}

我的参数类只是一个包含字符串和整数的结构。

public class Parameter {

    String parameter;
    String data_type;
    String description;
    int min_no;
    int max_no;
    int order1;
    int nested;
    String default1;
    String format;

}

我有一个List<String>必须是那样的List<Parameter>那必须是那样的 那么在这种情况下如何将我的列表复制到我的喜欢中? Collection.copy也不起作用。

// Create a list of node and compile the xpath expression
            NodeList nodeList = (NodeList) xPath.compile(expression).evaluate(
                    xmlDocument, XPathConstants.NODESET);

            arr = new String[nodeList.getLength()][constants.getParamColumns().length];

            // Loop thru the list and add to string array.
            for (int i = 0; i < nodeList.getLength()
                    / constants.getParamColumns().length; i++) {
                for (int j = 0; j < constants.getParamColumns().length; j++) {

                    arr[i][j] = nodeList.item(
                            j + (i * constants.getParamColumns().length))
                            .getTextContent();

                    list.add(nodeList.item(
                            j + (i * constants.getParamColumns().length))
                            .getTextContent());
                    System.out.println("current size in list : " + list.size());
                }
            }
            setArr(arr);


                        Add list to List<Parameter> here <-----
            System.out.println(" size of list : "
                    + objType.getParameters().size());

3 个答案:

答案 0 :(得分:0)

你做不到。与您无法将一个不兼容的类型变量分配给另一个变量相同,例如&#34; String s = new Parameter()&#34;。

答案 1 :(得分:0)

您无法为String分配参数。需要更改列表的类型

List<Parameter > list=objType.getParameters(); //UPDATED

答案 2 :(得分:0)

非常模糊地做, 您可以迭代所获得的String列表,并通过操作接收的String手动创建Parameter对象,然后将Parameter对象添加到参数列表中。

只有当您可以操作收到的String并确切地确定您想要在参数对象中提供哪些信息时,它才会起作用。

希望这有帮助!

祝你好运!