Java 8 - Static Method Reference Rule

Viewed 436

I have the following piece of code:

public class Chap20 {

    public static void main(String[] args) {
        String[] names = { "John", "Jane" };
        Stream<String> namesStream = Stream.of(names);

        Path path = Paths.get(".");
        Stream<Path> files;
        try {
            files = Files.list(path);
            files.forEach(System.out::println);
        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
    }

}

Now here´s the file.forEach method signature:

void java.util.stream.Stream.forEach(Consumer<? super Path> action)

I´m reading it as a method that accepts a consumer of a type which is at least a Path type or a superclass of Path, but I´m probably missreading it, since System.out is not a superclass of Path.

Can someone please explain how to correct read it?

3 Answers
Related