左侧既可以是类型名,也可以是函数对象

右侧需要是方法名

方法引用展开后是什么样,只需要确认其参数即可。确认参数后其他都可根据参数推导出。

  1. Math::max 等价于 (int a, int b) Math.max(a, b); 是静态方法。

    因为是逻辑部分是单行,所以将返回一个该行函数的结果。 返回值类型同函数定义。

  2. Student::getName 等价于 (Student stu) stu.getName(); 非静态方法。

    因为是逻辑部分是单行,所以将返回一个该行函数的结果。返回值类型同函数定义。

  3. System.out::println 等价于 (Object o) System.out.println(o); 非静态方法。

    此例中,System.out 是对象。println 的定义是 void,所以返回为 void。

  4. Student::new 等价于 () new Student(); 非静态方法。

    因为是逻辑部分是单行,所以将返回一个该行函数的结果。返回值类型同函数定义。

LambdaJava