質問をvarargとnullの間で分割しましょう。
vararg
varargsのポイントは、データの配列を呼び出し元のコードに配列としてではなく、個々の変数または定数として送信することです。
varargsの呼び出しはあまり直感的ではない場合があります。さまざまな場合に、次のようになります。
method("", "1", "2"); // vargs is {"1", "2"}
method(""); // vargs is {}, the empty array (it is not null)
method("", null); // vargs is {null}, size 1 array containing the element 'null'
method("", (Object[])null); // vargs is null, a null instance
3番目のケースは悪い形式と見なされることに注意してください。たとえば、nullが定数(変数に格納されていない)の場合、警告が表示されます。
4番目のケースでは、本当に問題を探していることに注意してください。;-)
ヌルのクラス
ここで、null配列(前の部分でソートされた)ではなく、null値を含む配列について話します。
一般的なケース
Nullは、(一度に)任意のクラスにすることができます。ただし、instanceof
常にfalseを返します。
地図に入れる
1つの値がnullの場合、何をしたいかを考える必要があります。明らかに、getClass()をnull値で呼び出すことはできません。したがって、次のいずれかを選択できます。
- null値をスキップし、マップに追加しないでください
- nullに関連付けるクラスを選択します。これは、Object、Void、または別の特定のクラスである可能性があります。関連付けは任意なので、それで何をしたいのか考えてください...