Подтвердить что ты не робот

Аргс гарантированно будет не нулевым?

В следующей программе, если это выполняется (например, через командную строку), аргумент JVM независимо гарантированно не равен null?

public class test {
    public static void main(String[] args) {
    }
}
4b9b3361

Ответ 1

Короткий ответ: да, он может иметь длину 0, но не будет null.

Ответ 2

Пакеты приложений с двойным щелчком на MacOS по-прежнему не имеют нулевого массива, которые передаются на главную, хотя в командной строке не существует.

Спецификация JVM не указывает, может ли параметр массива на главный метод быть нулевым. Видеть https://docs.oracle.com/javase/specs/jvms/se9/html/jvms-5.html#jvms-5.2

Однако соглашение состоит в том, что оно будет не нулевым, и маловероятно, что поставщик JVM нарушит это соглашение на этом этапе.

Ответ 3

Я не могу найти инструкции в разделе Загрузка, связывание и инициализация в разделе Спецификация виртуальной машины Java, для которой требуются аргументы non null.

Поэтому следует предположить, что null разрешено, и педантично ваша программа должна быть готова обрабатывать аргументы null. Даже если в типичных средах времени выполнения, таких как запуск программы Java с помощью программы java для запуска JVM в Linux, никогда не будет аргументов null.