5

ですから、宿題では、テストのエラーチェックのために、List<SomeObject>に乗り、を取得しIndexOutOfBoundsExceptionます。私はチェックを使用してそれを解決します.isEmptyが、なぜ私が知りたいのはそうではありません:

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

仕事?

アプリケーションをデバッグして見ると、myListの9つのエントリが表示されますnull。私はそれがサイズであると見ることができる0ので、それはおそらく理由ですか?サイズな0ので、エントリを取得しようとすると存在しませんか?

4

2 に答える 2

14

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();
于 2013-01-31T22:51:19.197 に答える
2

設計どおりに機能します。null空のからでも、何でも取得できると期待している理由がわかりませんList。できません。

于 2013-01-31T23:33:04.377 に答える