关于方法引用的补充
System.out.println()
这是一个很普通的打印方法,我们日常使用,用来单行打印一些参数内容。
System.out::println
通过::
可以看出,使用了方法引用,java8的新特性。
查看System.out
的代码
public final static PrintStream out = null;
查看printStream
类的代码
public void println() {
newLine();
}
所以,调用流程应该是
System类 -> out 获取PrintStream实例 -> 调用PrintStream类中的 println 方法。
结合之前了解到的方法引用的规则,可知这条代码的格式:
函数式接口 变量名 = 实例 :: 方法名
为什么不直接使用 PrintStream
查看 PrintStream 源代码的构造方法,我们可以看到,它的构造方法参数要么是需要流、或者file文件、file文件名字。要通过 PrintStream 来创建实例会很麻烦。
alt + 7
查看java类中的方法目录
ctrl + H
查看java类的层级结构
例子:
Consumer<String> fun = System.out::println;
fun.accept("hello");