Из-за использования Generics в Java мне пришлось реализовать функцию с Void
возвращаемым типом:
public Void doSomething() {
//...
}
и компилятор требует, чтобы я что-то вернул . Сейчас я просто возвращаюсь null
, но мне интересно, хорошая ли это практика кодирования ...
Я спрашиваю о V OID, а не v подъязычная. Класс Void
, а не зарезервированное ключевое слово void
.
Я также попытался Void.class
, void
, Void.TYPE
, new Void()
, нет возврата на все, но все , что не работает. (По более или менее очевидным причинам) (Подробнее см. В этом ответе )
- Итак, что я должен вернуть, если тип возврата функции
Void
? - Какое общее использование
Void
класса?
Невозможно создать экземпляр Void, поэтому единственное, что вы можете вернуть, - это null.
источник
return null
это путь.источник
Чтобы прояснить, почему другие предложения, которые вы дали, не работают:
Void.class
иVoid.TYPE
указывают на тот же объект и относятся к типуClass<Void>
, а не кVoid
.Вот почему вы не можете вернуть эти значения.
new Void()
будет иметь тип,Void
но этот конструктор не существует. Фактически,Void
он не имеет общедоступных конструкторов и поэтому не может быть создан: у вас никогда не может быть никакого объекта типа,Void
кроме полиморфногоnull
.Надеюсь это поможет! :-)
источник
Void.TYPE
не указываетVoid.class
. Это указывает наvoid.class
.Если по неясным причинам вы ДОЛЖНЫ использовать этот тип, тогда действительно возврат null кажется разумным вариантом, поскольку я полагаю, что возвращаемое значение все равно не будет использоваться.
Компилятор все равно заставит вас что-то вернуть.
И у этого класса, похоже, нет общедоступного конструктора, поэтому new Void () невозможен.
источник
именно так.
источник
Void
, что нетvoid
. Другие ответы, похоже, уже довольно хорошо освещают эту тему.