lambda的双冒号语法

在学习过程中最近经常能碰见java中的双冒号::语法形式
举例:

List<Integer> numbers = Arrays.asList(1, 2, 3, 4, 5);
numbers.forEach(System.out::println);
String name = null;
LambdaQueryWrapper<Book> lqw = new LambdaQueryWrapper<Book>();
lqw.like(Book::getName,name);
bookDao.selectList(lqw);

查阅相关资料了解到双冒号 ::语法是lambda表达式的一种表示

我们先来复习一下Lambda表达式

Lambda表达式

1.组成格式

  • 组成Lambda表达式的三要素:形式参数,箭头,代码块
  • Lambda表达式的格式
    ①、格式:(形式参数) -> {代码块}
    ②、形式参数:如果有多个参数,参数之间用逗号隔开;如果没有参数,留空即可
    ③、->:由英文中画线和大于符号组成,固定写法。代表指向动作
    ④、代码块:是我们具体要做的事情,也就是以前我们写的方法体内容

2.理解

Lambda表达式个人理解是用来简化匿名内部类的书写的一种语法形式

/**
 * @ProjectName: Springboot
 * @Package: com.zhn
 * @ClassName: Test
 * @Date: 2023/4/6 19:56
 */

interface LambdaDemo
{
    int demo(String str);
}

public class Lambda
{
    @Test
    public void test()
    {
        LambdaDemo lambdaDemo1 = new LambdaDemo() {
            @Override
            public int demo(String str) {
                return Integer.valueOf(str);
            }
        };
        LambdaDemo lambdaDemo2 = (str)->{
                return Integer.valueOf(str);
        };
        LambdaDemo lambdaDemo3 = (str)->{
            return Integer.valueOf(str);
        };
        LambdaDemo lambdaDemo4 = (str)-> Integer.valueOf(str);
        LambdaDemo lambdaDemo5 = Integer::valueOf;

    }
}

可见当函数的入参和返回值一致时可以使用