あなたがオーバーロードされたメソッド(同じ名前を持つ複数のメソッドのすなわち1)にnull
値を渡すと、あなたはその方法をしたい場合(String[]) null
を使用する必要があります
String[] array = (String[]) null;
を使用する必要はありませんコンパイラが選択する引数はString[]
です。例えば
、あなたは以下のメソッドがある場合:コンパイラが選択するためにどの方法を知ることができませんので、
public void doSomething (Integer i) {}
public void doSomething (String s) {}
public void doSomething (String[] arr) {}
doSomething (null)
の呼び出しを、コンパイルを渡しません。
doSomething ((String[]) null)
を呼び出すと、3番目の方法が実行されます。
もちろん
、あなたがString[]
変数にnull
を割り当て、キャストを避けることができます。
String[] arr = null;
doSomething (arr);
最初のいずれかを選択する理由はあり決してません。 – Kayaman
最初は型キャストです。 –
最初の場所で*コレクション型*を 'null'に設定しないでください!そうすることで、それ以外の場合には必要ない* nullチェック*を行うことが強制されます。 –