変数がnullの可能性があることができないというのJavaを伝えるためにどのように?

ファビアンRöling:

私は基本的にはこのようになりますプログラムを持っています:

boolean[] stuffNThings;
int state=1;
for(String string:list){
   switch(state){
      case 1:
         if(/*condition*/){
            // foo
            break;
         }else{
            stuffNThings=new boolean[/*size*/];
            state=2;
         }
      // intentional fallthrough
      case 2:
         // bar
         stuffNThings[0]=true;
   }
}

もし、人間が、見ることができるようにそこに以前の状態1であり、それは、配列を初期化した後の状態2に切り替えたときに、ケース2は今まで行われます。それは彼らにかなり複雑なロジックのように見えるので、しかし、EclipseとJavaコンパイラは、この表示されません。Eclipseは不平を言うので:

ローカル変数のstuffNThingsは初期化されていないかもしれません。」

そして私の変更「場合boolean[] stuffNThings;」を「boolean[] stuffNThings=null;」、それがこのエラーメッセージに切り替わり:

潜在的なNULLポインタアクセス:変数stuffNThingsは、この場所でのnullの場合もあります。

アレイのサイズのみ状態1の最後のループ後に決定されるので、私はまた、上部でそれを初期化することができません。

Javaは、配列がnullになることができると思うが、私はそれができないことを知っています。これをJavaのを伝えるためにいくつかの方法はありますか?それとも私は間違いなく役に立た置くことを余儀なくしていますnullその周りのチェックを!値が実際に設定されない場合があるように見えるので、それを追加すると、コードが難しく理解することができますtrue

ファビアンRöling:

ちょうどかかわらず、Eclipseの不満のコードを実行しようとした後、私はそれは確かに問題なく実行しないことに気づきました。だから、明らかにそれは重要ではないにも関わらず、「エラー」レベルにちょうど警告されて設定されました。
私は「警告」と「潜在的なNULLポインタへのアクセス」の重大度を設定し(それに応じて他のいくつかのレベルを調整する)ように、「設定の問題の重大度」ボタンがありました。今、警告としてだけマークしてEclipseと文句なしのコードを実行します。

おすすめ

転載: http://43.154.161.224:23101/article/api/json?id=332052&siteId=1