解析:让左边的函数跟右边的方法具有相同的逻辑,前提条件是两边具有相同的 参数列表跟返回类型 以下所有的引用都是具备这样的条件
以下所有的接口都是jdk1.8以上的util包下的function包里面的
1,引用类的静态方法 类名::静态方法名
public void method1(){
Consumer<String> c = Student::play ;
c.accept("王者荣耀");
Function<Integer, String> f = String::valueOf ;//将整形转成字符串,这里String是一个类
String s = f.apply(18);
System.out.println(s);
}
2,引用某个对象的普通方法 对象名::方法名
public void method2(){
Student s = new Student();
Consumer<Integer> c = s::study ;
c.accept(30);
}
3,引用某个类的构造方法 类::new
public void method3(){
Supplier<Student> s = Student::new;
Student s1 = s.get();
System.out.println(s1);
}
4,引用任意对象的方法 类名::方法名
public void method4(){
Student s = new Student();
BiFunction<Student, Integer, String> bf = Student::sleep ;
String s1 = bf.apply(s, 30);
System.out.println(s1);
}
类里面的几种方法
package com.blb.seven03;
public class Student {
//一个参数无返回
public void study(int time){
System.out.println("好好学习,天天向上"+time+"分钟");
}
//一个参数有返回
public String sleep(int time){
System.out.println("早睡早起身体好"+time+"分钟");
return "hello";
}
//一个参数无返回静态
public static void play(String name){
System.out.println("一起玩"+name);
}
}