当前位置:网站首页>简单使用Lambda表达式
简单使用Lambda表达式
2022-08-09 06:21:00 【嘿嘿潶黑黑】
Lambda表达式
语法
() -> {}
() 是接口方法的括号,如果有参数,也需要写参数。只有一个参数时,括号可以省略。
-> 分割左右部分
{} 要实现的方法体,只有一行代码时,可以不加
概念
使用于lambda表达式的接口称之为函数型接口,函数型接口说白了就是一个抽象方法的接口。
基本语法
interface Test1Service{
void sayMsg(String msg);
}
public class Test1 {
public static void main(String[] args) {
// TODO Auto-generated method stub
Test1Service ts = msg -> System.out.println("test"+msg);
ts.sayMsg("hello");
}
}
注意事项
- java8为函数式接口引入了一个新注解**@FunctionalInterface**,该注解主要用于编译级错误检查
- 接口中包含了两个抽象方法的话,就违反了函数式接口的定义,IDE会直接报错
- 函数式接口里可以包含默认方法,因为默认方法不是抽象方法,其有一个默认实现,所以是符合函数式接口的定义的
- 函数式接口里可以包含静态方法,因为静态方法不能是抽象方法,是一个已经实现了的方法,所以是符合函数式接口的定义的
- 函数式接口里可以包含Object里的public方法,因为任何一个函数式接口的实现,默认都继承了Object类,包含了来自java.lang.Object里对这些抽象方法的实现
进阶
方法引用
我们要实现接口的方法与另一个方法A类似,(这里的类似是指参数类型与返回值部分相同),我们直接声明A方法即可
方法引用的语法有三种:
- 类::静态方法名
- 类::实例方法名
- 对象::实例方法名
interface Function{
String sendMsg(Object o);
@Override
boolean equals(Object obj);
}
public class Test2 {
public static void main(String[] args) {
// TODO Auto-generated method stub
Function f = String::valueOf;
System.out.println(f.sendMsg(1));
System.out.println(f.sendMsg('c'));
}
}
构造引用
import java.util.function.BiFunction;
import java.util.function.Function;
import java.util.function.Supplier;
class Function3 {
private int x;
private String y;
Function3(){
x = 0;
y = "hello";
}
Function3(int x){
this.x = x;
y = "hello";
}
Function3(int x,String y){
this.x = x;
this.y = y;
}
public int getX() {
return x;
}
public void setX(int x) {
this.x = x;
}
public String getY() {
return y;
}
public void setY(String y) {
this.y = y;
}
@Override
public String toString() {
return "Function3 [x=" + x + ", y=" + y + "]";
}
}
public class Test3 {
public static void main(String[] args) {
// TODO Auto-generated method stub
//无参
Supplier<Function3> f1 = () -> new Function3();
Function3 ft1 = f1.get();
System.out.println(f1.toString());
System.out.println(ft1);
//单参
Function<Integer, Function3> f2 = x -> new Function3(x);
System.out.println(f2.apply(1));
//双参
BiFunction<Integer, String, Function3> f3 = (x,y) -> new Function3(x,y);
System.out.println(f3.apply(1, "test"));
}
}
边栏推荐
- 磁性核壳四氧化三铁颗粒负载金纳米星|磁性Fe3O4-POSS-COOH|超顺磁四氧化三铁聚多巴胺核壳结构纳米粒子
- Unity backgammon game design and simple AI implementation (1)
- Can Jincang Database Set Transaction Automatic Commit?
- How to find package information and pin definitions for NXP S32K1xx series microcontrollers
- GNNExplainer applied to node classification task
- 数据库中间件-jdbi
- 【JMeter】jmeter测试 - 上传多个图片/批量上传图片接口 CSV文件参数化方法
- mongo+ycsb性能测试及线程数分析
- C# 利用iTextSharp画PDF
- 51 serial communication (on)
猜你喜欢
Xilinx Zynq ZynqMP DNA
workbench 数据导出
zip压缩包密码解密
Gao Zelong, a famous digital collection expert and founder of the Digital Collection Conference, was interviewed by China Entrepreneur Magazine
MYSQL Advanced Chapter - Query Interception Analysis, Lock Mechanism, Master-Slave Replication
[GO], arrays and slices
手把手教你用C语言制作七夕流星雨---优雅永不过时(详细教程)
05 多线程与高并发 - ThreadPoolExecutor 源码解析
shell regular expressions
Used to import the data type
随机推荐
[R language] Extract all files under a folder to a specific folder
二十四节气之立秋
运算放大器(OPA)超详细参数讲解-运放---以及8个型号的运算放大器分析对比
磁性核壳四氧化三铁颗粒负载金纳米星|磁性Fe3O4-POSS-COOH|超顺磁四氧化三铁聚多巴胺核壳结构纳米粒子
C# 利用iTextSharp画PDF
中英文说明书丨CalBioreagents 山羊抗人白蛋白,IgG组分
Unity 五子棋游戏设计和简单AI(2)
域名批量查询在线工具
phpstudy install flarum forum
Ferric oxide/bismuth sulfide nanocomposites ([email protected]@BSABiS nanoparticles) | dendrimer-stabilized bismuth sulfide nanop
声母-字母查询工具-词语缩写查询在线工具
Domain name batch query online tool
【Feel】In the Unity Feel plugin, Camera cannot display CameraShake correctly
ZIP压缩包文件删除密码的方法
workbench 数据导出
一道很简答但是没答对的SQL题
2022-08-08:给定一个数组arr,表示从早到晚,依次会出现的导弹的高度。 大炮打导弹的时候,如果一旦大炮定了某个高度去打,那么这个大炮每次打的高度都必须下降一点。 1) 如果只有一个大炮,返回
手把手教你用C语言制作七夕流星雨---优雅永不过时(详细教程)
shell regular expressions
剑指offer专项突击版第24天