Java函数式编程:一、函数式接口,lambda表达式和方法引用( 三 )


Object o = new o;method(o::methodName);这样我们的编译器就知道 , 这个方法是由我们的对象o来运行的 , 非常的明确 。
但是 , 还有一种情况就是未绑定的方法引用 , 即尚未关联到某个对象的普通方法 。对于这种引用 , 必须先提供对象 , 才能进行使用 。
interface Showable{String show(Show1 s);}class Show1{public String show(){return "hello world";}}public class test {public static void main(String[] args){Show1 s = new Show1();Showable sa = Show1::show;System.out.println(s.show());// 关键就在这里 , 我们知道这里sa实际上没有实例 , show()当然无法调用 , 但实际上这里最终会调用到对象s的show()方法// 实际上 , 这里Java知道 , 它必须接受这个参数s , 并且在s上面调用方法// 如果方法有更多参数 , 只需遵循第一个参数取得是this这种模式System.out.println(sa.show(s));}}若不只一个参数 , 则如下
public class test {public static void main(String[] args){Show1 s = new Show1();Showable sa = Show1::show;System.out.println(s.show(1, 2));System.out.println(sa.show(s, 1, 2));}}interface Showable{String show(Show1 s, int a, int b);}class Show1{public String show(int a, int b){return "hello world";}}实际上 , 除了普通的方法外 , 我们还可以通过new代替方法名来引用其构造器方法 , 这也是非常有用的 , 由于构造器方法实际上绑定该类 , 相当于静态方法 , 所以我们只需要通过接口直接调用即可 。
【Java函数式编程:一、函数式接口,lambda表达式和方法引用】

经验总结扩展阅读