Lambda "invalid method reference no suitable method found"

minos5000

Aktives Mitglied
Hi,

bei dem Versuch mich mehr mit Lambdas zu beschäftigen bin ich in einem Tutorial auf folgenden Codeschnippsel gestolpert
Code:
    public static void main(String[] args) {
        Optional stringOptional = Optional.of("loooooooong string");
        Optional sizeOptional = stringOptional.map(String::length);
        System.out.println("size of string " + sizeOptional.orElse(0));
    }

Allerdings meckert Netbeans über den Ausdruck "String:length" mit der im Titel angegebenen Meldung.

Kann mir jemand erklären, was hier den Fehler verursacht?

Grüße
minos
 
Hi Minos,

dem Compiler fehlt die Typisierung der Variablen
Code:
stringOptional
und
Code:
sizeOptional

Ohne diese Typisierung ist für dem Compiler alles vom Typ Object. Und Object hat keine Methode length.

Änder das ganze einfach folgendermaßen ab, dann wird es wie gewünscht funktionieren.

Code:
public static void main(String[] args) {
        Optional<String> stringOptional = Optional.of("loooooooong string");
        Optional<Integer> sizeOptional = stringOptional.map(String::length);
        System.out.println("size of string " + sizeOptional.orElse(0));
    }
 
Zuletzt bearbeitet:

Zurück
Oben