-
Couldn't load subscription status.
- Fork 1
JDK8 lambda 表达式
qw213 edited this page Sep 28, 2020
·
1 revision
Lambda 表达式结构
传递行为,而不是传递值
(params1, params2, params3....) -> {执行体}
关于函数式接口:
- 如果一个接口只有一个抽象方法,那么该接口就是一个函数式接口。
- 如果我们在某个接口上声明了
FunctionalInterface注解,那么编译器就会按照函数式接口的定义来要求该接口。 - 如果某个接口只有一个抽象方法,但我们并没有给该接口声明
FunctionalInterface注解,那么编译器依旧会将该接口看成一个函数式接口。
Lambda 表达式作用
- Lambda 表达式为 Java 添加了缺失的函数式编程特性,使我们能将函数当做一等公民对待
- 在将函数作为一等公民的语言中,Lambda 表达式的类型是函数。但在 java 中,Lambda 表达式是对象,他们必须依附于一类特别的对象类型-函数式接口
@FunctionalInterface
interface MyInterface2{
void test();
//Object 类的方法
String toString();
}
public class Test2 {
public void test2(MyInterface2 interface2){
System.out.println(1);
interface2.test();
System.out.println(2);
}
public static void main(String[] args){
Test2 test2 = new Test2();
test2.test2(new MyInterface2() {
@Override
public void test() {
System.out.println("mytest2");
}
});
System.out.println("===============");
test2.test2(() -> {
System.out.println("newMyTest2");
});
System.out.println("===============");
//interface2 后面是一个对象
MyInterface2 myInterface2 = () -> {
System.out.println("MyIntesss");
};
System.out.println(myInterface2.getClass());
System.out.println(myInterface2.getClass().getSuperclass());
System.out.println(myInterface2.getClass().getInterfaces()[0]);
}
}Copyright © 2020 https://dailypaper.cn
01.Java 基础
02.集合源码解析
03.Java 多线程
04.Java 虚拟机
05.计算机网络
06.算法&数据结构
07.数据库
08.Web 框架
09.面试题