lamda表达式
Posted programmlover
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了lamda表达式相关的知识,希望对你有一定的参考价值。
一: Lamda表达式基本语法:
(args1, args2,...) -> express block
lamda表达式由两部分组成,参数和语句块,参数可以不写参数类型也可以写参数类型,如果写参数类型,必须与对应方法的参数类型一致,如果只有一个参数,可以省略小括号();语句块中如果只有一条语句,可以省略大括号 和return关键字。
lamda表达式只支持函数式接口,函数式接口就是只有一个方法的接口,例如Runnable,
二: java8自带四大函数式接口
1.Consumer<T> //消费型接口
void accetp(T t)
2.Supplier<T> //提供型接口
T get(T t)
3.Function<T, R> //函数型接口
R apply(T t)
4.Predicate<T> //断言型接口
boolean test(T t)
三: 方法引用与构造器引用
当调用的语句块是已经实现的方法时,可以使用方法引用,方法引用有三种语法格式:
1. 对象::实例方法名
2.类::静态方法名
3.类::实例方法名
当调用的语句块是已经构造器时,可以使用构造器引用,构造器引用语法格式如下:
类::new
注意:无论是方法引或与构造器引用,要引用成功的前提时已实现的方法或构造器参数必须与函数式方法的参数一致
代码实例如下
public class Student private String name; private Integer age; public static Student student = new Student("张三", 30); public Student() public Student(String name) this.name = name; public Student(String name, Integer age) this.name = name; this.age = age; public String getName() return name; public void setName(String name) this.name = name; public Integer getAge() return age; public void setAge(Integer age) this.age = age; public static void showStudent(Student student) System.out.println("name = " + student.getName() + ",age=" + student.getAge()); public static void main(String[] args) Supplier<Integer> supplier = Student.student::getAge; Integer integer = supplier.get(); System.out.println(integer); Consumer<Student> comsumer = Student::showStudent; comsumer.accept(new Student("王五", 50)); Function<String, Student> function = Student::new; Student student = function.apply("赵六"); System.out.println(student.getName());
以上是关于lamda表达式的主要内容,如果未能解决你的问题,请参考以下文章