Давайте разделим вопрос между vararg и нулем.
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
Обратите внимание, что третий случай считается дурным тоном. Например, вы получаете предупреждение, если ноль является константой (не хранится в переменной).
Обратите внимание, что в четвертом случае вы действительно ищете проблемы! ; -)
Класс Null
Теперь мы говорим о массиве, который содержит нулевое значение, а не о нулевом массиве (который был отсортирован в предыдущей части).
Общий случай
Нуль может быть любого класса (все одновременно). Но instanceof
всегда будет возвращать false.
Положить в карту
Если одно значение равно нулю, вам нужно подумать о том, что вы хотите сделать. Очевидно, getClass () не может быть вызван для нулевого значения. Таким образом, вы можете выбрать между:
- пропустить нулевое значение , не добавлять его на карту
- выберите класс , который вы хотите связать с нулем. Это может быть Object, или Void, или другой определенный класс. Подумайте, что вы хотите с ним сделать, потому что ассоциация произвольна ...