Java中的多线程学习笔记004:Lambda表达式和函数式接口
https://space.bilibili.com/95256449/channel/detail?cid=146244
Lambda表达式和函数式接口
Functional Interface(函数式接口):
1、任何接口,如果只包含唯一一个抽象方法,那么它就是一个函数式接口。
public interface Runnable{
public abstract void run();
}
2、对于函数式接口,我们可以通过lambda表达式来创建接口的对象。
函数式接口简化过程
package com.stark.study001;
public class TestLambda001 {
//3、静态内部类
static class Like2 implements ILike {
@Override
public void lambda() {
System.out.println("I like lambda002.");
}
}
public static void main(String[] args) {
ILike like = new Like();
like.lambda();
like = new Like2();
like.lambda();
//4、局部内部类
class Like3 implements ILike {
@Override
public void lambda() {
System.out.println("I like lambda003.");
}
}
like = new Like3();
like.lambda();
//5、匿名内部类,没有类的名称,必须借助接口或者父类,必须借助接口或者父类
like = new ILike() {
@Override
public void lambda() {
System.out.println("I like lambda004.");
}
};
like.lambda();
//6、用lambda表达式简化
like = () -> {
System.out.println("I like lambda005.");
};
like.lambda();
}
}
//1、定义一个函数式接口
interface ILike {
void lambda();
}
//2、实现接口
class Like implements ILike {
@Override
public void lambda() {
System.out.println("I like lambda001.");
}
}
lambda表达式传参和简化
package com.stark.study001;
/**
* 总结:
* lambda表达式只能有一行代码的情况下才能简化成一行,如果有多行,那么就要用花括号包裹起来。
* 且前提是接口为函数式接口
* 多个参数也可以去掉参数类型,但是必须加上括号
* **/
public class TestLambda002 {
public static void main(String[] args) {
//2、lambda表达式简化并传参
ILove love = (int a) -> {
System.out.println("I love you-->" + a);
};
love.love(520);
//3、简化一:参数类型
love = (a) -> {
System.out.println("I love you-->" + a);
};
love.love(521);
//4、简化二:去掉括号
love = a -> {
System.out.println("I love you-->" + a);
};
love.love(522);
//5、简化三:去掉花括号,因为只有一行代码,如果有多行代码,不能简化花括号。
love = a -> System.out.println("I love you-->" + a);
love.love(523);
}
}
//1、定义一个函数式接口
interface ILove {
void love(int a);
//函数式接口只能包含一个函数
// void love2(int a);
}
浙公网安备 33010602011771号