JDK8的Lamda表达式

本文介绍了JDK8的Lambda表达式,包括其语法格式、函数式接口的定义,以及方法引用和构造器引用的使用。Lambda表达式简化了单一抽象方法接口的实现,可以通过箭头符号->和表达式主体实现接口方法。同时,文章提到了@FunctionalInterface注解,用于标识函数式接口。此外,还展示了如何使用方法引用和构造器引用来进一步简化Lambda表达式。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Lamda表达式只针对有一个抽象方法的接口实现。

Lamda表达式的语法格式:

([数据类型 参数名,数据类型 参数名,....])->{表达式主体}

(1)([数据类型 参数名,数据类型 参数名,....])用来向表达式主体传递接口方法需要的参数,多个参数名用英文逗号分割。在编写Lamda表达式时可以缺省参数的数据类型,表达式主体会自动进行校对和匹配,如果只有一个参数可以省略括号()。

(2)->:表示表达式箭牌不能省略,必须是英文横线和大于号书写

(3){表达式主体}:由单个表达式或语句块组成的主体,本质是接口中抽象方法的具体实现,如果语句中只有一条语句可以省略大括号,Lamda表达式允许有返回值,如果只有一条return语句也可以省略return关键字。

interface Student{

    void name();

}

public class Example{

public static void main(String[] args){

  studentName(new Student{

    public void name(){

       System.out.println("ddd")

    }

  });

studentName(()->System.out.println("Lamda表达式"))

}

public static void studentName(Student stu){

 stu.name();

}

}

函数式接口:

函数式接口是指有且仅有一个抽象方法的接口,Lamda表达式就是Java中函数式编程的实现,只有确保接口中只有一个抽象方法,Lamda表达式才能顺利实现接口中的这个方法。Jdk8中引入了@FunctionalInterface注解,该注解只是显示的标注了接口是一个函数式接口,强制编辑器进行更严格的检查,对程序运行没有实质的影响。

@FunctionalInterface

interface Student{

    void name();

}

public class Example{

public static void main(String[] args){

studentName(()->System.out.println("Lamda表达式"))

}

public static void studentName(Student stu){

 stu.name();

}

}

方法引用与构造器引用

Lamda表达式的主体只有一条语句时,程序不仅可以省略主体的大括号,还可以通过英文双冒号“::”语法格式来引用方法和构造器。

Lamda表达式对普通方法和构造方法的引用形式

种类Lamda表达式示例对应的应用示例
类名引用普通方法(x,y,...)->对象名x.类普通方法名(y,...)类名::类普通方法名
类名引用静态方法(x,y,...)->类名.类静态方法名(x,y,...)类名::类静态方法名
对象名引用方法(x,y,...)->对象名.实例方法名(x,y,...)对象名::实例方法名
构造器引用(x,y,...)->new 类名(x,y,...)类名::new

 

用法示例:

类名引用普通方法

printUpper("hello",(object,t)->object.printUpperCase(t))

printUpper("hello",StringUtils::printUpperCase)

类名引用静态方法

funcationName(-10,n->Math.abs(n))

funcationName(-10,Math::abs)

对象名引用方法

printUpper("hello",t->stu.printUpperCase(t));

printUpper("hello",stu::printUpperCase);

构造器引用

printName("Tom",name->new Person(name))

printName("Tom",Person::new)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值