【8】java新特性,双冒号 :: 的使用场景

本文介绍了Java8中的双冒号操作符(::)的用途,它简化了Lambda表达式。该操作符可以引用实例方法和静态方法,通过示例展示了如何在实例方法和静态方法中使用::。示例代码包括了如何在forEach循环中使用::调用方法。
摘要由CSDN通过智能技术生成

在使用双冒号前我们要先搞清楚一个问题:为什么要使用双冒号?也就是双冒号的作用是什么。
双冒号的设计初衷是为了化简Lambda表达式

【1】java8中引入了一个新的操作符  :: , 是两个英文半角的冒号, 这个操作符用来引用方法, 其本质也是对接口的一种重写。

【2】::操作符可以引用实例方法,也可以引用静态方法, 引用实例时::前面是实例, 引用静态方法时::前面是类

package Study;

import java.util.ArrayList;
import java.util.List;

public class TestLzw {
    protected interface commonFunc {
        void apply(String a);
    }

    public String doAdd(String a){
        System.out.println("---doAdd---" + a);
        return "";
    }

    public void addOne(String a){
        System.out.println("---addOne---" + a);
        addAll(a,this::doAdd);
    }

    public void addAll(String a, commonFunc commonFunc){
        System.out.println("---addAll---" + a);
        commonFunc.apply(a);  // 其实这里执行的就是doAdd
    }

    public static void main(String[] args) {
        System.out.println("示例一:");
        TestLzw test = new TestLzw();
        test.addOne("迪丽热巴");

        System.out.println("示例二:");
        List<String> names = new ArrayList<String>();
        names.add("Bush");
        names.add("Tom");
        names.add("Jim");

        TestLzw test1 = new TestLzw();
        names.forEach(System.out::println);

        System.out.println("引用实例前面是实例-----------------");
        names.forEach(test1::printRealName);

        System.out.println("引用静态方法前面是类----------------");
        names.forEach(TestLzw::printOtherName);
    }

    public void printRealName(String str) {
       System.out.println(str);
    }

    public static void printOtherName(String str) {
        System.out.println(str);
    }
}

  

参考:

https://www.cnblogs.com/maohuidong/p/11527681.html

https://www.jb51.net/article/188998.htm

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值