import java.util.ArrayList;
public class TestArray {
public void function()
{
test1 a1=new test1();
a1.setA(1);
a1.setQueue(new ArrayList<test1>(1));
test1 test2=a1.getQueue().get(0);
test2.setA(2);
test2.setQueue(null);
}
private class test1{
int a;
ArrayList<test1> queue;
public int getA() {
return a;
}
public void setA(int a) {
this.a = a;
}
public ArrayList<test1> getQueue() {
return queue;
}
public void setQueue(ArrayList<test1> queue) {
this.queue = queue;
}
public test1(){}
public test1(int a, ArrayList<test1> queue) {
super();
this.a = a;
this.queue = queue;
}
}
}
我无法在此代码中创建ArrayList<test1> queue;
它抛出异常。
Exception in thread "main" java.lang.IndexOutOfBoundsException: Index: 0, Size: 0
at java.util.ArrayList.rangeCheck(Unknown Source)
at java.util.ArrayList.get(Unknown Source)
at TestArray.function(TestArray.java:11)
at test.main(test.java:17)
答案 0 :(得分:2)
问题在于这两行
a1.setQueue(new ArrayList<test1>(1));
test1 test2=a1.getQueue().get(0);
什么
new ArrayList<test1>(1)
确实是创建初始容量为1的ArrayList,它不会向它添加任何对象
因此,a1中的队列没有任何元素,这就是你获得IndexOutOfBoundsException
的原因。