JDK8-1-Lambda表达式(4)-方法引用

JDK8-1-Lambda表达式(4)-方法引用

方法引用可以被看作调用特定方法的 Lambda 表达式的一种快捷写法,主要分为以下几种情况:

  1. 对象::方法名
  2. 类名::静态方法
  3. 类名::普通方法
  4. 类名::new (实例化对象)

对象::方法名

下例中,date 为 Date 类型的对象,supplier 接收的 Lambda 表达式方法体中返回时间戳

public static void test1() {
    Date date = new Date();
    Supplier<Long> supplier = () -> date.getTime();
    System.out.println(supplier.get());
}

使用引用语法改写后:

public static void test1_2() {
    Date date = new Date();
    Supplier<Long> supplier =  date::getTime;
    System.out.println(supplier.get());
}

看一个带参数的例子:

public static void test2() {
    String str = "abcdef";
    BiFunction<Integer, Integer, String> function = (i, j) -> str.substring(i, j);
    System.out.println(function.apply(1, 3));
}

改写后:

public static void test2_2() {
    String str = "abcdef";
    BiFunction<Integer, Integer, String> function = str::substring;
    System.out.println(function.apply(1, 3));
}

类名::静态方法

public static void test3() {
    Supplier<Integer> supplier = ()-> LocalDate.now().getYear();
    System.out.println(supplier.get());

    Supplier<Integer> supplier2 = LocalDate.now()::getYear;
    System.out.println(supplier2.get());
}

类名::普通方法

public static void test4() {
    BiFunction<String,Integer,String> function = (str,i)-> str.substring(i) ;
    System.out.println(function.apply("abc",1));

    BiFunction<String,Integer,String> function2 = String::substring; ;
    System.out.println(function2.apply("abc",1));
}

类名::new

public static void test5() {
    Supplier<Date> supplier = ()-> new Date();
    System.out.println(supplier.get());

    Supplier<Date> supplier2 = Date::new ;
    System.out.println(supplier2.get());
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值