不可能だよ。しばらく考えてみると、それもナンセンスだと気付くでしょう。このコードを例にとってみましょう。
String s = getSomeString(); // assigns null
int length = s.length; // throws NPE
if (length > 10) { // what would you do here?? length is un-initialized
domeSomething();
}
編集
コードスニペットで質問を更新したので、 sを処理するための2つの一般的なアプローチがあります。null
1.本来あるべきではない場所でそれらを禁止します
コードスニペットで、EditText
sのリストを提供しました。これらのリストはnullである可能性があります。さて、私の意見ではActivity
、Androidにいくつかのビューがあるはずの場合、何らかの理由でそれらのいずれかがあれば、プログラミングエラーになります。null
一部のビューがないアクティビティは正しく機能しないため、NPEをスローしてアプリケーションを終了することは、完全に賢明な方法です。
NPEは、「ねえ、あなたは間違いを犯したので、それを修正しなければならない」と言っています。それまでは、予測できない状態のアプリが実行を継続することは安全ではありません。何が起こり、どのデータが破損する可能性があるかを誰も知らないためです。
2.意味のある場所でそれらを許可し、ヌルチェックを提供します
値が空になる可能性のある変数を持つことができる場所がいくつかあります。空の値を表現する方法はいくつかありnull
、最も明白なものです。
その場合、NPEの可能性を単に無視することはできず、いくつかのnullチェックを実行する必要があります。しかし、繰り返しになりますが、NPEはあなたの敵ではありません。それはあなたがあなたが持つべきであるすべての可能な状況を説明するのを忘れていることをあなたに告げます。
もちろん、nullチェックを繰り返すと、コードが乱雑でノイズが多くなるため、nullチェックを一般化するメソッドをいくつか作成できます。私は賢明な例を思い付くことができなかったので、この方法は説明のためだけに取ってください。
public void clearEditTexts(EditText... editTexts) {
for (EditText e : editTexts) {
if (e != null) {
e.setText("");
}
}
}
このメソッドは、渡されたすべてのEditTextの内容をクリアします。それらのいずれもnullにすることができますが、このメソッドはこれらのnullチェックを内部で実行するため、それぞれに対して手動で実行する必要はありません。
この質問は、nullの処理についても非常によく読んでい
ます。!=nullステートメントの回避