在空列表中使用“.Get(0)”时,我得到一个越界异常而不是null?

时间:2013-01-31 22:20:36

标签: java arraylist indexoutofboundsexception

所以在我的家庭作业中,对于我的错误检查测试的东西,我做了List<SomeObject>得到了IndexOutOfBoundsException。我通过检查.isEmpty来解决它,但我想知道为什么不:

boolean b = myList.Get(0) != null;

工作?

当我调试应用程序并查看myList时,我看到null的9个条目。我可以看到它的大小0,所以这可能是为什么?它的大小为0,所以当我尝试获取一个条目时它不存在?

2 个答案:

答案 0 :(得分:10)

如果是Java:

ArrayList<Object> list = new ArrayList<Object>();
list.get(0);

会导致

Exception in thread "main" java.lang.IndexOutOfBoundsException: Index: 0, Size: 0
    at java.util.ArrayList.RangeCheck(ArrayList.java:547)
    at java.util.ArrayList.get(ArrayList.java:322)
    at HelloWorldTester.main(HelloWorldTester.java:7)

原因实际上是源代码。 rangecheck可能正在检查你想要获得的是否低于列表的大小。如果它更高 那么

throw new IndexOutOfBoundsException();

答案 1 :(得分:2)

按设计工作。我不明白为什么你希望能从空null获得任何东西,甚至是List。你不能。