Ответ 1
Короткий ответ: да, он может иметь длину 0, но не будет null.
В следующей программе, если это выполняется (например, через командную строку), аргумент JVM независимо гарантированно не равен null?
public class test {
public static void main(String[] args) {
}
}
Короткий ответ: да, он может иметь длину 0, но не будет null.
Пакеты приложений с двойным щелчком на MacOS по-прежнему не имеют нулевого массива, которые передаются на главную, хотя в командной строке не существует.
Спецификация JVM не указывает, может ли параметр массива на главный метод быть нулевым. Видеть https://docs.oracle.com/javase/specs/jvms/se9/html/jvms-5.html#jvms-5.2
Однако соглашение состоит в том, что оно будет не нулевым, и маловероятно, что поставщик JVM нарушит это соглашение на этом этапе.
Я не могу найти инструкции в разделе Загрузка, связывание и инициализация в разделе Спецификация виртуальной машины Java, для которой требуются аргументы non null.
Поэтому следует предположить, что null
разрешено, и педантично ваша программа должна быть готова обрабатывать аргументы null
. Даже если в типичных средах времени выполнения, таких как запуск программы Java с помощью программы java
для запуска JVM в Linux, никогда не будет аргументов null
.