Почему нельзя использовать Void в качестве типа возврата для основного метода
Итак, я хотел проверить Void
типа тогда я написал эту простую программу:
package ehsan;
public class NumTest {
public static Void main(String[] args) {
System.out.println("Hello, World!");
return null; /* The compiler forced me to do so. I just can't realize what is the point in returning in Void type!? */
}
}
Итак, теперь, когда я хочу скомпилировать, компилятор жалуется:
main method must return a value of type void
Почему компилятор не видит, что я ничего не возвращаю и использую Void
?
4 ответа
Вы должны использовать void
(в нижнем регистре v
) не Void
объект. Void
объект не будет получать автобокс, как, например, int
/Integer
см. Спецификацию языка Java для списка объектов автобоксирования.
Void
не является оберткой для void
, это просто объект с очень похожим именем, поэтому его можно использовать в местах, где вам нужно указать тип возвращаемого значения (например, например, Callable<T>
), это просто для целей документирования и для обхода некоторых типов возвращаемых классов.
Второй вариант использования находится в отражении (когда вы хотите проверить возвращаемое значение void
функция, вы получите Void.TYPE
).
Правильная линия:
public static void main(String[] args)
Void - это тип класса, поэтому компилятор ожидает, что вы вернете ему значение. Вы должны использоватьvoid
с строчной буквы.
Причина вашей ошибки:
Метод main должен возвращать значение типа void
из-за правила, что метод main всегда должен возвращать void
- это ключевое слово Java, а не тип класса.
Вы должны использовать void
вместо Void
Как это:
public static void main(String[] args)
Ошибка печати.
это void
не Void
Случилось так, что Void - это класс в Java. Из документов
Класс Void - это нереализуемый класс-заполнитель для хранения ссылки на объект Class, представляющий ключевое слово Java void.