方法引用详解

 主程序

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);
    }
}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值