Czego mi brakuje? Dlaczego muszę używać Object::toString
poniżej, a nie Integer::toString
? Czy ma to coś wspólnego z wymazywaniem typów z rodzajami?Wywoływanie doString za pomocą odwołania do metody w języku Java 8
Arrays.asList(1,2,3).stream().map(Integer::toString).forEach(System.out::println); //Won't compile
Arrays.asList(1,2,3).stream().map(Object::toString).forEach(System.out::println); //Compiles and runs fine
BTW można po prostu napisać 'Arrays.asList (1,2,3). forEach (System.out :: println); 'lub' Stream.of (1,2,3) .forEach (System.out :: println); 'lub' IntStream.rangeClosed (1, 3) .forEach (System. out :: println); ' –
możliwy duplikat [Jak naprawić błędny typ w odniesieniu do metody Java8 (toString of Integer)] (http://stackoverflow.com/questions/21873829/how-to-fix-ambigous-type -on-java8-method-referen ce-tostring-of-an-integer) – Holger