这是我的构造函数:
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给出了构造权吗?我该如何解决这个问题?
答案 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]);
}
}