我的构造函数不会构建或者"返回"什么应该归还

时间:2014-09-22 17:07:57

标签: java arraylist constructor

这是我的构造函数:

public class OrderedIntList extends ArrayList{


    public OrderedIntList(int ... elements) {
        ArrayList <Integer> temp = new ArrayList<Integer>();


        for(int i=0; i<elements.length; i++) {
            temp.add(elements[i]);
        }
    }

}

这是我的计划:

public static void main(String[] args) {
    int[] a = {1,2,4,5,3};
    OrderedIntList la = new OrderedIntList(a);
    System.out.println(la);
}

当我运行它时,输出为:[ ]。从技术上讲,构造函数dint给出了构造权吗?我该如何解决这个问题?

4 个答案:

答案 0 :(得分:1)

用于添加的代码片段发生的很多,实用程序函数存在于类集合中。 我已经用addAll替代了。

public class OrderedIntList extends ArrayList<Integer> {

    public OrderedIntList(int... elements) {
        for (int element : elements) {
            add(element);
        }
    }

    public OrderedIntList(Integer... elements) {
        Collections.addAll(this, elements);
    }

}

ArrayList也是参数化的。

答案 1 :(得分:0)

您要在构造函数中向temp列表中添加元素,而应该像这样添加到列表中

        for(int i=0; i<elements.length; i++) {
            add(elements[i]);
         }

答案 2 :(得分:0)

在构造函数中,您初始化了本地ArrayList,其中包含在构造函数中传递的元素,但是toString不知道此本地列表,并且是从您扩展的类 - ArrayList打印由继承结构保存的元素。所以考虑将构造函数更改为

public OrderedIntList(int... elements) {
    for (int i = 0; i < elements.length; i++) {
        this.add(elements[i]);// your class extends ArrayList 
                              // so it inherited structure to store elements
                              // and toString is base on this structure
                              // not on local list declared in constructor
    }
}

答案 3 :(得分:0)

您正在构造函数中创建一个本地ArrayList:

OrderedIntList(int... elements) {
    ArrayList temp = new ArrayList();

您应该直接编写传递的值:

public OrderedIntList(int... elements) {
    for (int i = 0; i < elements.length; i++) {
        add(elements[i]);
    }
}