Kann nicht konvertieren void java.lang.Void
Ich versuche zu tun, die folgenden
interface Updater {
void update(String value);
}
void update(Collection<String> values, Updater updater) {
update(values, updater::update, 0);
}
void update(Collection<String> values, Function<String, Void> fn, int ignored) {
//some code
}
aber ich bekomme diese compiler-Fehlermeldung:
"Cannot convert void to java.lang.Void"
Das bedeutet, dass updater::update
nicht verwendet werden Function<String, Void>
.
Kann ich natürlich nicht schreiben Function <String, void>
und ich will nicht zu ändern Sie den Rückgabetyp update()
zu Void
.
Wie kann ich dieses problem beheben?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Einen
Function
gibt einen Wert zurück, auch wenn es deklariert ist, als der TypVoid
(Sie müssen zurücknull
dann. Im Gegensatz dazu, einevoid
Methode wirklich gibt nichts zurück, auch nichtnull
. So haben Sie zum einfügen derreturn
Aussage:Wäre eine alternative zum ändern der
Function<String,Void>
zuConsumer<String>
, dann können Sie die Methode verwenden, Referenz:Eine Funktion einen Wert zurückgibt. Was du suchst ist die
java.util.function.Consumer
- Schnittstelle. Dies hat einevoid accept(T)
Methode und gibt keinen Wert zurück.Damit Sie Methode wird: