この方法で新しい配列を作成しようとしています:
final boolean[] arr = new boolean[list.size()];
この行は、場合によっては私のコードで null ポインターをスローしています。これはどのような状況で発生する可能性がありますか? リストの要素がゼロの場合に発生する可能性はありますか? この段階では、リストが null ではないことは確かです。
この方法で新しい配列を作成しようとしています:
final boolean[] arr = new boolean[list.size()];
この行は、場合によっては私のコードで null ポインターをスローしています。これはどのような状況で発生する可能性がありますか? リストの要素がゼロの場合に発生する可能性はありますか? この段階では、リストが null ではないことは確かです。
NullPointerExceptionがスローされるということは、オブジェクトが初期化されていないことを意味します。他のこととは何の関係もありません。あなたが言及した行から例外がスローされた場合、質問のコメントにあるように、リストは初期化されていません。
動的な長さを使用して配列を作成するには (初期化後に配列サイズを変更できないことに注意してください)、次のようにします。
ArrayList<String> list = new ArrayList<String>();
//Add elements to your list
String[] arr = list.toArray(new String[list.size()]);
boolean[] arr = new boolean[0];
それも有効な構文です。サイズが0の配列を作成できます。list
したがって、 nullでなければ生成されませんNullPointerException
list
その行でのみ発生している場合、null ポイントは null のときに発生する可能性があります。それがあなたが得ている例外であるなら、それlist
はnull
. コードをもう一度見てください。きっとわかると思います。または、コードをデバッグしてlist
、この行の値を確認してください。
リストはインスタンス化されませんでした。したがって、nullです。宣言後にリストをインスタンス化したかどうかを確認してください。
list
これは、 が の場合にのみ発生しnull
ます。list
が空の場合、 list.size()
0 を返します。
配列の代わりにリストを使用して、最後にリストから配列を取得してください..
リスト変数が初期化されていることを確認してください。NPE をスローする唯一の方法は、リスト自体が null であることです。