このコードでは。
public class Test {
public static void testFun(String str) {
if (str == null | str.length() == 0) {
System.out.println("String is empty");
} else {
System.out.println("String is not empty");
}
}
public static void main(String [] args) {
testFun(null);
}
}
null
関数に値を渡しますtestFun
。正常にコンパイルされますがNullPointerException
、実行時に提供されます。これは私が予期していなかったことです。if
条件を評価してtrue
「Stringisempty」を出力するのではなく、なぜ例外をスローするのですか?
渡される実際の引数の値がtestFun
何らかのプロセスから生成されたと仮定します。誤ってnull
値がそのプロセスによって返され、testFunに供給されたと想定します。そのような場合、関数に渡された値がnullであるかどうかをどのように検証しますか?
1つの(奇妙な)解決策は、関数内の変数に仮パラメーターを割り当ててからテストすることです。しかし、関数に渡される変数が多い場合、それは退屈で実行不可能になる可能性があります。では、そのようなシナリオでnull値をどのようにチェックするのでしょうか。