En raison de l'utilisation de Generics en Java, j'ai fini par devoir implémenter une fonction ayant Void
comme type de retour:
public Void doSomething() {
//...
}
et le compilateur demande que je retourne quelque chose . Pour l'instant, je reviens juste null
, mais je me demande si c'est une bonne pratique de codage ...
Je pose des questions sur V oid, pas sur v oid. La classe Void
, pas le mot-clé réservé void
.
J'ai aussi essayé Void.class
, void
, Void.TYPE
, new Void()
, pas de retour du tout, mais tout ce qui ne fonctionne pas du tout. (Pour des raisons plus ou moins évidentes) (Voir cette réponse pour plus de détails)
- Alors, que suis-je censé retourner si le type de retour d'une fonction est
Void
? - Quelle est l'utilisation générale de la
Void
classe?
Il n'y a aucun moyen d'instancier un Void, donc la seule chose que vous pouvez retourner est null.
la source
return null
est la voie à suivre.la source
Pour expliquer pourquoi les autres suggestions que vous avez faites ne fonctionnent pas:
Void.class
etVoid.TYPE
pointent vers le même objet et sont de typeClass<Void>
, pas deVoid
.C'est pourquoi vous ne pouvez pas renvoyer ces valeurs.
new Void()
serait de typeVoid
mais ce constructeur n'existe pas. En fait,Void
n'a pas de constructeur public et ne peut donc pas être instancié: vous ne pouvez jamais avoir d'objet de type à l'Void
exception du polymorphenull
.J'espère que cela t'aides! :-)
la source
Void.TYPE
ne pointe pas versVoid.class
. Il pointe versvoid.class
.Si, pour des raisons obscures, vous DEVEZ utiliser ce type, alors le retour de null semble être une option raisonnable, car je suppose que la valeur de retour ne sera pas utilisée de toute façon.
Le compilateur vous obligera quand même à retourner quelque chose.
Et cette classe ne semble pas avoir de constructeur public, donc le nouveau Void () n'est pas possible.
la source
juste comme ça.
la source
Void
nonvoid
. Les autres réponses semblent déjà couvrir assez bien le sujet.