0

この方法で新しい配列を作成しようとしています:

final boolean[] arr = new boolean[list.size()];

この行は、場合によっては私のコードで null ポインターをスローしています。これはどのような状況で発生する可能性がありますか? リストの要素がゼロの場合に発生する可能性はありますか? この段階では、リストが null ではないことは確かです。

4

7 に答える 7

1

NullPointerExceptionがスローされるということは、オブジェクトが初期化されていないことを意味します他のこととは何の関係もありません。あなたが言及した行から例外がスローされた場合、質問のコメントにあるように、リストは初期化されていません。

動的な長さを使用して配列を作成するには (初期化後に配列サイズを変更できないことに注意してください)、次のようにします。

ArrayList<String> list = new ArrayList<String>();
//Add elements to your list
String[] arr = list.toArray(new String[list.size()]);
于 2013-08-29T10:02:13.523 に答える
0
boolean[] arr = new boolean[0];

それも有効な構文です。サイズが0の配列を作成できます。listしたがって、 nullでなければ生成されませんNullPointerException

于 2013-08-29T10:01:20.770 に答える
0

listその行でのみ発生している場合、null ポイントは null のときに発生する可能性があります。それがあなたが得ている例外であるなら、それlistnull. コードをもう一度見てください。きっとわかると思います。または、コードをデバッグしてlist、この行の値を確認してください。

于 2013-08-29T10:01:28.097 に答える
0

リストはインスタンス化されませんでした。したがって、nullです。宣言後にリストをインスタンス化したかどうかを確認してください。

于 2013-08-29T10:01:43.333 に答える
0

listこれは、 が の場合にのみ発生しnullます。listが空の場合、 list.size()0 を返します。

于 2013-08-29T10:01:50.883 に答える
0

配列の代わりにリストを使用して、最後にリストから配列を取得してください..

于 2013-08-29T10:02:40.757 に答える
0

リスト変数が初期化されていることを確認してください。NPE をスローする唯一の方法は、リスト自体が null であることです。

于 2013-08-29T10:09:35.767 に答える