主程序
package com.xsh.am;
import java.util.function.Consumer;
import java.util.function.Function;
import java.util.function.Supplier;
//要想方法引用,必须保证在相应位置上的变量类型一致
//比如说下面这个例子,Function中的apply(T t)方法,它的传入参数是Integer,返回值为Integer
//那么你引用的Caculate中的add方法,它的传参也要是Integer,返回值也是Integer
public class MethodReference02 {
public static void main(String[] args){
Caculate caculate = new Caculate(10);
//对象::实例方法
Function<Integer, Integer> function = caculate::add;
System.out.println(function.apply(10));
//类::静态方法
Supplier<Integer> supplier1 = Caculate::getNumber;
System.out.println(supplier1.get());
//类::实例方法:为什么会出现这种形式呢,因为你传入的是某个对象,然后需要用这个对象
//来使用方法,但是方法引用里面会把传入的参数省略,这时你没有该对象了,必须用该类来
//代替这个对象
Consumer<Caculate> consumer = Caculate::printNumber;
consumer.accept(new Caculate());
//类::new:用来新建对象
Supplier<Caculate> supplier2 = Caculate::new;
Caculate caculate1 = supplier2.get();
}
}
Caculate对象
package com.xsh.am;
public class Caculate {
int a;
static int number = 10;
public Caculate(){
this(10);
}
public Caculate(int a){
this.a = a;
}
public int add(int b){
return a + b;
}
public static int getNumber(){
return number;
}
public void printNumber(){
System.out.println(number);
}
}