概述
Lambda表达式的简单使用以及需要注意的地方!!
1格式:
( ) -> { }
(参数…)-> {方法体}
注意:
1.当参数只有一个的时候,小括号可以省略不写
2.当方法体中的代码只有一句的时候,大括号可以省略不写
3.传入的参数,参数类型可以省略不写
4.可选的返回关键字return:如果主体只有一个表达式返回值则可以省略return和{}
2使用
条件:
接口中有且只能有一个抽象方法,默认方法静态方法不受影响
格式:
修饰符 interface 接口名称 {
[public abstract] 返回值类型 方法名称(可选参数信息);
// 其他
}
函数式接口
被@FunctionalInterface 注解标注的为函数式接口
该注解可用于一个接口的定义上,一旦使用该注解来定义接口,编译器将会强制检查该接口是否确实有且仅有一个抽象方法,否则将会报错。
注意:
即使没有@FunctionalInterface该注解满足有且只有一个抽象方法的接口都称为函数式接口
可传递的匿名函数(行为参数化)
自己的理解:Lambda表达式其实就是匿名内部类对象,表达式右边的部分会传递给方法体,所以也可以把Lambda表达式理解成”方法”
官方的定义:可以把Lambda表达式理解为简洁地表示可传递的匿名函数的一种方式:它没有名称,但它有参数列表、函数主体、返回类型。这个定义还是太模糊的,让我们从以下几个关键词慢慢道来。
匿名——我们说匿名,是因为它不像普通的方法那样有一个明确的名称:写得少而做得多!
函数——我们说它是函数,是因为Lambda函数不像方法那样属于某个特定的类。但和方法一样,Lambda有参数列表、函数主体、返回类型。
传递——Lambda表达式可以作为参数传递给方法或存储在变量中。
简洁——无需像匿名类那样写很多模板代码。
(1)不带参数
接口:
package com.bigdata.lambda;
@FunctionalInterface
public interface MyFunctionalInterface {
void myMethod();
}
测试类:
package com.bigdata.lambda;
/**
-
@author Administrator
-
@date 2019/2/23 19:37
-
@description
*/
public class testDemo {
public static void main(String[] args) {//test(new MyFunctionalInterface() { // // @Override // public void myMethod() { // System.out.println("匿名内部类输出"); // } //}); //使用Lambda表达式代替上面的匿名内部类 test(() -> System.out.println("lambda表达式输出"));
}
public static void test(MyFunctionalInterface my) {
my.myMethod();
}
}
(2)带参数
接口
package com.bigdata.lambda;
/**
- @author Administrator
- @date 2019/2/23 19:36
- @description
*/
@FunctionalInterface
public interface testInterface {
void test(String str);
}
测试类:
package com.bigdata.lambda;
/**
-
@author Administrator
-
@date 2019/2/23 20:02
-
@description
*/
public class testDemo0 {
public static void main(String[] args){
test(“带参lambda测试”, new testInterface() {
@Override
public void test(String str) {
System.out.println(str);
}
});//lambda表达式测试 //test("带参lambda测试" ,(string)->System.out.println("带参lambda测试"));
}
public static void test(String str,testInterface testInterface){
testInterface.test(str);
}
}
使用解析(自己理解):
内置函数
Consumer
消费型接口 T void 对类型为T的对象操作,
方法:void accept(T t)
Supplier
供给型接口 无 T 返回类型为T的对象,
方法:T get();可用作工厂
Function<T, R>
函数型接口 T R 对类型为T的对象操作,并返回结果是R类型的对象
方法:R apply(T t);
Predicate
断言型接口 T boolean 判断类型为T的对象是否满足条件,返回boolean值
方法boolean test(T t);
最后
以上就是动人哈密瓜为你收集整理的Lambda表达式的简单使用以及需要注意的地方!!的全部内容,希望文章能够帮你解决Lambda表达式的简单使用以及需要注意的地方!!所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复