0

次のような方法がある場合:

public Object getObject(int i) {
    if (i >= 0 && i < objectList.size()) {
        return objectList.get(i);
    } else {
        return 
    }
}

これは、配列インデックスの範囲外エラーに対処するための最良の方法ですか? また、else ステートメントで何を返す必要がありますか?

4

5 に答える 5

3

この質問に対する絶対的な答えはありません。それは多くのことに依存します。ただし、nullが正当な値でない場合は を返しnull、正当な値である場合throwは例外とします。

/**
 * ...
 * @return The element at index i, null if out of bounds. 
 */
public Object getObject(int i) {
    if (i >= 0 && i < objectList.size()) {
        return objectList.get(i);
    }
    return null;
}

または、nullが正当な値の場合:

public Object getObject(int i) throw IndexOutOfBoundsException {
    if (i >= 0 && i < objectList.size()) {
        return objectList.get(i);
    }
    throw new IndexOutOfBoundsException();
}
于 2013-11-09T14:42:47.677 に答える
1

「最善の方法」などというものはありません。すべては特定のアプリケーションに依存します。「null」がある程度認識できる場合 (コンテナに null がない場合)、オプションになる可能性があります。0 を返すことが適切なオプションである場合 (厳密に正の数のコンテナーを扱う場合) もあれば、要素を返すことができる場合もありi % sizeます (そのため、コンテナーは循環的です)。一般に、存在しない要素を求められたときに何かを返すことは常に危険です。

最も「頻繁な」アプローチは、何かを返す代わりに例外を発生させることです。

于 2013-11-09T14:43:15.917 に答える