Ze względu na użycie Generics w Javie musiałem zaimplementować funkcję mającą Void
jako typ zwracany:
public Void doSomething() {
//...
}
a kompilator żąda, abym coś zwrócił . Na razie wracam null
, ale zastanawiam się, czy to dobra praktyka kodowania ...
Pytam o V OID, a nie przeciwko oid. Klasa Void
, a nie zastrzeżone słowo kluczowe void
.
Próbowałem zostały również Void.class
, void
, Void.TYPE
, new Void()
, nie ma powrotu w ogóle, ale to nie działa w ogóle. (Z mniej lub bardziej oczywistych powodów) (Zobacz tę odpowiedź, aby uzyskać szczegółowe informacje)
- Więc co mam zwrócić, jeśli zwracanym typem funkcji jest
Void
? - Jakie jest ogólne zastosowanie tej
Void
klasy?
Nie ma sposobu na utworzenie instancji Void, więc jedyne, co możesz zwrócić, to null.
źródło
return null
jest droga do zrobienia.źródło
Aby wyjaśnić, dlaczego inne podane przez Ciebie sugestie nie działają:
Void.class
iVoid.TYPE
wskazują na ten sam obiekt i są typuClass<Void>
, a nie typuVoid
.Dlatego nie możesz zwrócić tych wartości.
new Void()
byłby typu,Void
ale ten konstruktor nie istnieje. W rzeczywistościVoid
nie ma publicznych konstruktorów, więc nie można go utworzyć instancji: nigdy nie można mieć żadnego obiektu typuVoid
poza polimorficznymnull
.Mam nadzieję że to pomoże! :-)
źródło
Void.TYPE
nie wskazujeVoid.class
. Wskazuje navoid.class
.Jeśli z niejasnych powodów MUSISZ użyć tego typu, to rzeczywiście zwrócenie wartości null wydaje się być rozsądną opcją, ponieważ przypuszczam, że wartość zwracana i tak nie zostanie użyta.
Kompilator i tak zmusi Cię do zwrócenia czegoś.
A ta klasa nie ma publicznego konstruktora, więc nowe Void () nie jest możliwe.
źródło
takie jak to.
źródło
Void
, że nievoid
. Wydaje się, że inne odpowiedzi już całkiem dobrze pokrywają ten temat.