Poniższy kod:Argument Niezgodność przy użyciu metody gromadzący Stream
names = Arrays.asList("A","B","C").stream();
List<String> namesAsList = names.collect(() -> new ArrayList<String>(),List::add,List::add);
System.out.println("Individual Strings put into a list: " + namesAsList);
generuje następujący błąd podczas kompilacji:
Lista namesAsList = names.collect (() -> new ArrayList ( ), Lista :: dodaj, Lista :: dodaj); ^ (niedopasowanie argumentu, nieprawidłowe odwołanie do metody niekompatybilne typy: ArrayList nie może być konwertowane na int) gdzie R, T są zmiennymi typu: R extends Obiekt zadeklarowany w metodzie collect (Dostawca, biConsumer, BiConsumer) T extends Obiekt zadeklarowany w interfejsie strumień 1 błąd
Kiedy zmienić kod, aby usunąć rodzajowy kod kompiluje z niesprawdzony ostrzeżenie wyrażenie:
Stream<String> names = Arrays.asList("A","B","C").stream();
List<String> namesAsList = names.collect(() -> new ArrayList(),List::add,List::add);
System.out.println("Individual Strings put into a list: " + namesAsList);
Dlaczego miałbym być ten błąd? Nie oczekuję, że problem będzie dotyczył int.
Jeśli odpowiedź może obejmować sposób ustalenia problemu, będzie to docenione, więc mogę się nauczyć sam rozwiązywać te problemy.
Nawiasem mówiąc, możesz użyć 'Stream.of (" A "," B "," C ")' do utworzenia strumienia adrech trzech elementów. – Holger
Dzięki za komentarz. Ćwiczę do egzaminu Java 8, więc używam różnych sposobów tworzenia obiektu strumienia w moim kodzie ćwiczebnym. –