目录
一、Lambda表达式本质上是一个匿名方法
让我们来看下面这个例子:
public int add(int x, int y) {
return x + y;
}
//转成Lambda表达式后是这个样子:
(int x, int y) -> x + y;
//参数类型也可以省略,Java编译器会根据上下文推断出来:
(x, y) -> x + y; //返回两数之和
或者
(x, y) -> { return x + y; } //显式指明返回值
二、Lambda表达式和函数式接口结合
//新建无参函数式接口
@FunctionalInterface
public interface InterfaceWithNoParam {
void run();
}
//实现函数式接口
public class TestJava8{
//匿名内部类
InterfaceWithNoParam param1 = new InterfaceWithNoParam() {
@Override
public void run() {
System.out.println("通过匿名内部类实现run()");
}
};
//Lambda表达式
//空括号表示无参
InterfaceWithNoParam param = () -> System.out.println("通过Lambda表达式实现run()") ;
}
三、其他形式的函数式接口及实现
1.有参无返回值
//有参无返回值
@FunctionalInterface
public interface InterfaceWithParams {
void run(String s);
}
//实现
InterfaceWithParams params = new InterfaceWithParams() {
@Override
public void run(String s) {
System.out.println("通过" + s + "实现run(String)");
}
};
InterfaceWithParams params1 = (String s) -> System.out.println("通过" + s + "实现run(String)");
2.无参有返回值
//无参有返回值
//接口
@FunctionalInterface
public interface InterfaceUnVoidWithNoParam {
String run();
}
//实现
InterfaceUnVoidWithNoParam interfaceUnVoidWithNoParam = new InterfaceUnVoidWithNoParam() {
@Override
public String run() {
return "Hello World!";
}
};
InterfaceUnVoidWithNoParam interfaceUnVoidWithNoParam1 = () -> "Hello Lambda!";
3.有参有返回值
//有参有返回值
//接口
@FunctionalInterface
public interface InterfaceUnVoidWithParams {
String run(Integer integer);
}
//实现
InterfaceUnVoidWithParams interfaceWithParams = new InterfaceUnVoidWithParams() {
@Override
public String run(Integer integer) {
return String.valueOf(integer);
}
};
InterfaceUnVoidWithParams interfaceWithParams1 = (Integer integer) -> String.valueOf(integer);
本文深入探讨了Java 8中的Lambda表达式,它本质上是一种匿名方法。通过实例展示了Lambda如何简化代码,如将传统方法转换为简洁的表达式。同时,介绍了Lambda与函数式接口的结合,包括无参、有参无返回值、无参有返回值和有参有返回值等不同类型的函数式接口的实现。这为理解Java 8的函数式编程提供了清晰的指导。
276

被折叠的 条评论
为什么被折叠?



