分分钟教会你使用Lambda表达式

2 篇文章 0 订阅

Java 中使用 Lambda表达式

Lambda的作用

Lambda表达式的作用主要是用来简化接口的创建,interface。
需要注意的是:
1.任何需要使用interface的地方都可以使用Lambda表达式来简化;
2.Lambda表达式不能够简化类或者抽象类得创建,如果试图使用Lambda表达式去创建一个类或者抽象类
将会报错如下英文信息 ”Target type of a lambda conversion must be an interface“
这就是为什么Lambda表达式只用用来简化创建接口

Java中的Interface

Lambda表达式既然是用来简化创建接口的,那么就先看看接口里面都包含些什么

1.接口中可以定义public static final 的常量
2.接口中可以定义多个public的方法

一个接口就包含上面两方面的内容,不会再有其他的东西了
但是这里Lambda表达式只能用来简化仅包含一个public方法的接口,也就是说,如果一个接口中包含了多个public方法,那么就不能够使用Lambda表达式进行创建

现在知道了Lambda表达式只能用来简化仅包含一个public方法的接口的创建,现在就具体说如何使用Lambda表达式

无论如何,这个接口中的方法都会以一下的6种形式中的一种出现

1.返回值为void,没有参数
2.返回值为void,有一个参数
3.返回值为void,有多个参数
4.有返回值,没有参数
5.有返回值,有一个参数
6.有返回值,有多个参数

现在分别就6种情况给出写法

1.

public interface In {
void func();
}

In in1 = ()->{};//这基本上最简单的Lambda表达式的写法了,实现的方法将什么都不会做
In in2 = ()->System.out.println("Func");//这里实现的方法将会输出一个字符串
In in3 = ()->{
    System.out.println("Func1");
    System.out.println("Func2");
};//使用{}来使用多个语句

2.

public interface In {
    void func(int a);
}

In in = a->System.out.println(a);
In in = (a)->{};

3.

public interface In {
    void func(int a,int b,int c);
}

In in = (a,b,c)->{
    //写入语句
};

4.

public interface In {
    int func();
}

In in = ()->2;
In in1 = ()->{return 2;};

5.

public interface In {
    int func(int a);
}

In in = a->a+1;
In in2 = a -> {
   return a+1;  
};

6.

public interface In {
    int func(int a,int b,int c);
}

In in = (a,b,c)->a+b+c;
In in1 = (a,b,c)->{
   return a+b+c;
};

掌握了上面这几种情形,现在就拿一些试试,比如说常见的开启子线程,常规代码是这样的

new Thread(new Runnable() {
        @Override
        public void run() {
            //do something
        }
    }).start();

这里就可以使用Lambda来简化上面的写法

new Thread(()->{
    //do something
    }).start();

之所以可以这样写,就是因为Runnable是一个只有一个run方法的接口

所以要记住:所有使用接口的地方都可以Lambda表达式来进行简化,只是一个简单的替换而已。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值