首页 > 其他 > 详细

Lambda表达式-未完成

时间:2021-06-02 08:44:44      阅读:18      评论:0      收藏:0      [点我收藏+]

Lambda 表达式

Lambda表达式可以看成是匿名内部类,使用Lambda表达式时,接口必须是函数式接口。

函数式接口在Java中是指: 有且仅有一个抽象方法的接口(接口中抽象方法的public abstract 是可以省略的)

基本语法:

        <函数式接口>  <变量名> = (参数1,参数2...) -> {
                    //方法体
        }

说明:
(参数1,参数2…)表示参数列表;->表示连接符;{ }内部是方法体
1、=右边的类型会根据左边的函数式接口类型自动推断;
2、如果参数列表为空,只需保留();
3、如果参数只有1个,()可以省略,只需要参数的名称即可;
4、如果执行语句只有1句,且无返回值,{ }可以省略,若有返回值,则若想省去{},则必须同时省略return,且执行语句也保证只有1句;
5、参数列表的数据类型会自动推断;
6、lambda不会生成一个单独的内部类文件;
7、lambda表达式若访问了局部变量,则局部变量必须是final的,若是局部变量没有加final关键字,系统会自动添加,此后在修改该局部变量,会报错;

 

示例代码:

public interface LambdaTest {
    abstract void print();
}

public interface LambdaTest2 {
    abstract void print(String a);
}

public interface DefalutTest {
    static int a =5;
    default void defaultMethod(){
        System.out.println("DefalutTest defalut 方法");
    }
int sub(int a,int b);
static void staticMethod() { System.out.println("DefalutTest static 方法"); } } public class Main { public static void main(String[] args) { //匿名内部类--java8之前的实现方式 DefalutTest dt = new DefalutTest(){ @Override public int sub(int a, int b) { // TODO Auto-generated method stub return a-b; } }; //lambda表达式--实现方式1 DefalutTest dt2 =(a,b)->{ return a-b; }; System.out.println(dt2.sub(2, 1)); //lambda表达式--实现方式2,省略花括号 DefalutTest dt3 =(a,b)->a-b; System.out.println(dt3.sub(5, 6)); //测试final int c = 5; DefalutTest dt4 =(a,b)->a-c; System.out.println(dt4.sub(5, 6)); //无参方法,并且执行语句只有1条 LambdaTest lt = ()-> System.out.println("测试无参"); lt.print(); //只有一个参数方法 LambdaTest2 lt1 = s-> System.out.println(s); lt1.print("有一个参数"); } }

 

局部变量修改报错如图:

技术分享图片

 

Lambda表达式-未完成

原文:https://www.cnblogs.com/wffzk/p/14839301.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!