当前位置:网站首页>Simple to use Lambda expressions
Simple to use Lambda expressions
2022-08-09 06:28:00 【hey hei hei hei】
Lambda表达式
语法
() -> {}
() are the parentheses of the interface method,如果有参数,也需要写参数.只有一个参数时,括号可以省略.
-> split left and right
{} 要实现的方法体,只有一行代码时,可以不加
概念
使用于lambdaThe interface for the expression is called函数型接口,A functional interface is simply an interface with abstract methods.
基本语法
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**,该注解主要用于编译级错误检查
- The interface contains two abstract methods,It violates the definition of functional interface,IDE会直接报错
- can be included in functional interfaces默认方法,因为默认方法不是抽象方法,其有一个默认实现,所以是符合函数式接口的定义的
- can be included in functional interfaces静态方法,因为静态方法不能是抽象方法,是一个已经实现了的方法,所以是符合函数式接口的定义的
- can be included in functional interfacesObject里的public方法,因为任何一个函数式接口的实现,默认都继承了Object类,包含了来自java.lang.Object里对这些抽象方法的实现
进阶
方法引用
We want to implement a method of an interface with another methodA类似,(这里的类似是指参数类型与返回值部分相同),我们直接声明A方法即可
There are three syntaxes for method references:
- 类::静态方法名
- 类::实例方法名
- 对象::实例方法名
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"));
}
}
边栏推荐
- io.lettuce.core.RedisCommandTimeoutException Command timed out
- Domain name batch query online tool
- INSTALL_RPATH and BUILD_RPATH problem in CMake
- [HNOI2002]营业额统计
- 线程的6种状态
- Text String Length Sorting - Online Tool
- pycharm环境包导入到另外一个环境
- kubernetes security
- 报错jinja2.exceptions.UndefinedError: ‘form‘ is undefined
- Excel受保护的工作表怎么操作?
猜你喜欢
深度学习-神经网络原理2
Use of PlantUML plugin in idea
GNNExplainer应用于节点分类任务
[email protected]@cadmium sulfide nanocore-shell structure material|Fe3O4 magnetic nanop"/>
Superparamagnetic iron [email protected]@cadmium sulfide nanocore-shell structure material|Fe3O4 magnetic nanop
抗菌药物丨Toronto Research Chemicals 天冬酰胺D
缓存技术使用
vs番茄助手的方便功能和便捷快捷键介绍
Bismuth sulfide nanorods with CT imaging function | Bismuth sulfide-zinc protoporphyrin composites (PAMAM/Bi2S3 composite nanoparticles)
安装flask
Magnetic Core-Shell Fe3O4 Particles Supported Gold Nanostars | Magnetic Fe3O4-POSS-COOH | Superparamagnetic Fe3O4-Polydopamine Core-Shell Nanoparticles
随机推荐
[MySQL] Second, the relationship between processes, MySQL password cracking, table building and database building related commands
报错:flask: TypeError: ‘function‘ object is not iterable
中英文说明书丨CalBioreagents 醛固酮单克隆抗体
【R语言】把文件夹下的所有文件提取到特定文件夹
e-learning summary
Unity五子棋游戏设计 和简单AI实现(1)
代码目录结构
数据库中间件-jdbi
Domain name batch query online tool
How to find package information and pin definitions for NXP S32K1xx series microcontrollers
tidb crash test
【Feel】Unity Feel插件中,Camera无法正确显示CameraShake
按图搜索1688商品接口(item_search_img-按图搜索1688商品(拍立淘接口)代码对接教程
使用百度EasyDL实现智能垃圾箱
BeautifulSoup4的介绍与使用
golang zip aes base64
单例模式
线程的6种状态
workbench 数据导出
Invalid argument(s) appears when redis runs lua script