Debido al uso de genéricos en Java terminé teniendo que implementar una función que tenía Void
como tipo de retorno:
public Void doSomething() {
//...
}
y el compilador exige que devuelva algo . Por ahora, acabo de regresar null
, pero me pregunto si esa es una buena práctica de codificación ...
Estoy preguntando V oid, no v OID. La clase Void
, no la palabra clave reservada void
.
También he intentado Void.class
, void
, Void.TYPE
, new Void()
, sin retorno en absoluto, sino todo lo que no funciona en absoluto. (Por razones más o menos obvias) (Consulte esta respuesta para obtener más detalles)
- Entonces, ¿qué se supone que debo devolver si el tipo de retorno de una función es
Void
? - ¿Cuál es el uso general de la
Void
clase?
No hay forma de crear una instancia de un vacío, por lo que lo único que puede devolver es nulo.
fuente
return null
es el camino a seguir.fuente
Para aclarar por qué las otras sugerencias que dio no funcionan:
Void.class
yVoid.TYPE
apuntan al mismo objeto y son de tipoClass<Void>
, no deVoid
.Por eso no puede devolver esos valores.
new Void()
sería de tipoVoid
pero ese constructor no existe. De hecho,Void
no tiene constructores públicos y, por lo tanto, no se puede instanciar: nunca puede tener ningún objeto de tipoVoid
excepto el polimórficonull
.¡Espero que esto ayude! :-)
fuente
Void.TYPE
no apuntaVoid.class
. Apunta avoid.class
.Si, por razones oscuras, DEBE usar este tipo, entonces devolver nulo parece ser una opción sensata, ya que supongo que el valor de retorno no se usará de todos modos.
El compilador te obligará a devolver algo de todos modos.
Y esta clase no parece tener un constructor público, por lo que new Void () no es posible.
fuente
así.
fuente
Void
novoid
. Las otras respuestas ya parecen cubrir bastante bien el tema.