Devido ao uso de Genéricos em Java acabei tendo que implementar uma função tendo Void
como tipo de retorno:
public Void doSomething() {
//...
}
e o compilador exige que eu retorne algo . Por enquanto, estou voltando null
, mas gostaria de saber se isso é uma boa prática de codificação ...
Estou perguntando sobre V oid, não v oid. A classe Void
, não a palavra-chave reservada void
.
Eu também tentei Void.class
, void
, Void.TYPE
, new Void()
, nenhum retorno em tudo, mas tudo o que não funciona em todos. (Por razões mais ou menos óbvias) (Veja esta resposta para detalhes)
- Então, o que devo retornar se o tipo de retorno de uma função for
Void
? - Qual é o uso geral da
Void
classe?
Não há como instanciar um Void, então a única coisa que você pode retornar é null.
fonte
return null
é o caminho a percorrer.fonte
Para deixar claro por que as outras sugestões que você deu não funcionam:
Void.class
eVoid.TYPE
apontam para o mesmo objeto e são do tipoClass<Void>
, não doVoid
.É por isso que você não pode retornar esses valores.
new Void()
seria do tipo,Void
mas esse construtor não existe. Na verdade,Void
não tem construtores públicos e, portanto, não pode ser instanciado: você nunca pode ter qualquer objeto do tipo,Void
exceto para o polimórficonull
.Espero que isto ajude! :-)
fonte
Void.TYPE
não aponta paraVoid.class
. Ele aponta paravoid.class
.Se, por razões obscuras, você DEVE usar este tipo, então retornar null parece ser uma opção sensata, uma vez que suponho que o valor de retorno não será usado de qualquer maneira.
O compilador irá forçá-lo a retornar algo de qualquer maneira.
E esta classe não parece ter um construtor público, então new Void () não é possível.
fonte
bem assim.
fonte
Void
, nãovoid
. As outras respostas já parecem cobrir bastante bem o assunto.