Aufgrund der Verwendung von Generics in Java musste ich schließlich eine Funktion mit Void
dem Rückgabetyp implementieren :
public Void doSomething() {
//...
}
und der Compiler verlangt, dass ich etwas zurückgebe . Im Moment kehre ich gerade zurück null
, aber ich frage mich, ob das eine gute Codierungspraxis ist ...
Ich frage nach V oid, nicht nach V oid. Die Klasse Void
, nicht das reservierte Schlüsselwort void
.
Ich habe auch versucht Void.class
, void
, Void.TYPE
, new Void()
, keine Rückkehr überhaupt, aber alles , was überhaupt nicht funktionieren. (Aus mehr oder weniger offensichtlichen Gründen) ( Einzelheiten finden Sie in dieser Antwort. )
- Was soll ich also zurückgeben, wenn der Rückgabetyp einer Funktion ist
Void
? - Was ist die allgemeine Verwendung der
Void
Klasse?
Es gibt keine Möglichkeit, eine Leere zu instanziieren. Sie können also nur null zurückgeben.
quelle
return null
ist der Weg zu gehen.quelle
Um zu verdeutlichen, warum die anderen Vorschläge, die Sie gemacht haben, nicht funktionieren:
Void.class
undVoid.TYPE
zeigen auf das gleiche Objekt und sind vom TypClass<Void>
, nicht vonVoid
.Aus diesem Grund können Sie diese Werte nicht zurückgeben.
new Void()
wäre vom Typ,Void
aber dieser Konstruktor existiert nicht. In der TatVoid
hat keine öffentlichen Konstruktoren und kann daher nicht instanziiert werden: Sie können nie ein Objekt vom TypVoid
außer dem polymorphen habennull
.Hoffe das hilft! :-)
quelle
Void.TYPE
zeigt nicht aufVoid.class
. Es zeigt aufvoid.class
.Wenn Sie diesen Typ aus unklaren Gründen verwenden MÜSSEN, scheint die Rückgabe von null tatsächlich eine sinnvolle Option zu sein, da der Rückgabewert vermutlich sowieso nicht verwendet wird.
Der Compiler zwingt Sie trotzdem, etwas zurückzugeben.
Und diese Klasse scheint keinen öffentlichen Konstruktor zu haben, so dass ein neues Void () nicht möglich ist.
quelle
genau wie dieser.
quelle
Void
nichtvoid
. Die anderen Antworten scheinen das Thema bereits ziemlich gut abzudecken.