Пусть основные аргументы Java будут null [duplicate]

Вы используете объект, содержащий ссылку нулевого значения. Таким образом, он дает пустое исключение. В примере строковое значение равно null, и при проверке его длины произошло исключение.

Пример:

string value = null;
if (value.Length == 0) // <-- Causes exception
{
    Console.WriteLine(value); // <-- Never reached
}

Ошибка исключения:

Необработанное исключение:

System.NullReferenceException: ссылка на объект не установлена ​​в экземпляр объекта. в Program.Main ()

14
задан TenPlusFive 7 March 2012 в 18:38
поделиться

3 ответа

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

10
ответ дан Michał Kosmulski 23 August 2018 в 17:23
поделиться

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

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

2
ответ дан Raedwald 23 August 2018 в 17:23
поделиться

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

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

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

1
ответ дан swpalmer 23 August 2018 в 17:23
поделиться
Другие вопросы по тегам:

Похожие вопросы: