- 注意一下“函数式接口(Functional Interface)”的概念就行,剩下的就和python的类似了
- lambda表达式和函数式接口的概念是jdk8引入的
- lambda表达式一定要慎用,因为在大多数情况下他会降低代码的可读性
package justATest;
import java.util.*;
public class Tmp {
//AFunc是函数式接口:所谓的函数式接口,首先是一个接口,然后就是在这个接口里面只能有一个抽象方法
//注意一点,java8之后允许interface里有静态方法,但是static修饰后就不是抽象方法了
//所以写成public static void func(){...}这种后就不是函数式接口
@FunctionalInterface
private interface AFunc{
public void func(int x);
}
public static void main(String [] args) {
//#1
int x=9;
Runnable f = ()->System.out.println("#1: "+x);
//直接调用 run 方法(没开新线程)
f.run();
//#2
//注意,lambda表达式里的参数不能喝local变量重名(之前已经定义了一个int x=9)
AFunc ff=(xx)->System.out.println("#2: "+xx);
ff.func(x);
//#3
Integer[] arr=new Integer[3];
for(int i=0;i<3;i++) {
arr[i]=i;
}
//注意,java里不能写List<Integer> arr = Arrays.asList(arr);(别被python惯坏了)
List<Integer> ar = Arrays.asList(arr);
ar.forEach((a)->System.out.println("#3: "+a));
}
}
运行结果:
#1: 9
#2: 9
#3: 0
#3: 1
#3: 2