无法在同一个类中创建Class的ArrayList

时间:2014-04-30 06:18:46

标签: java arraylist

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)

1 个答案:

答案 0 :(得分:2)

问题在于这两行

a1.setQueue(new ArrayList<test1>(1));
test1 test2=a1.getQueue().get(0);

什么

new ArrayList<test1>(1)

确实是创建初始容量为1的ArrayList,它不会向它添加任何对象

因此,a1中的队列没有任何元素,这就是你获得IndexOutOfBoundsException的原因。