![](https://img.haomeiwen.com/i15577479/8c0dc25ed7532f2f.png)
![](https://img.haomeiwen.com/i15577479/f0ed5fe76abcd56b.png)
函数式接口,接口中只能有1个方法。如果有多个方法,使用lambda表达式会报错。
public class TestLambda1 {
//静态内部类
static class Like2 implements Ilike{
@Override
public void lambda() {
System.out.println("I like lambda2");
}
}
public static void main(String[] args) {
//局部内部类
class Like3 implements Ilike{
@Override
public void lambda() {
System.out.println("I like lambda3");
}
}
Ilike like = new Like();
like.lambda();
like = new Like2();
like.lambda();
like = new Like3();
like.lambda();
//匿名内部类,没有类的名称,必须借助接口或者父类
like = new Ilike() {
@Override
public void lambda() {
System.out.println("I like lambda4");
}
};
like.lambda();
like = ()->{
System.out.println("I like lambda5");
};
like.lambda();
}
}
interface Ilike{
void lambda();
}
class Like implements Ilike{
@Override
public void lambda() {
System.out.println("I like lambda");
}
}
lambda表达式只有一行代码的情况下可以去掉花括号,如果有多行,必须用代码块。
参数可以去掉参数类型,多个参数事要去掉就都去掉。
1个参数时可以去掉圆括号,多个参数时必须用括号括起来。
public class TestLambda2 {
public static void main(String[] args) {
Ilove love;
// love = (int a) -> {
// System.out.println("I love me " + a);
// };
//简化参数类型
// love = (a) -> {
// System.out.println("I love me " + a);
// };
//简化圆括号
// love = a -> {
// System.out.println("I love me " + a);
// };
//简化花括号
// love = a -> System.out.println("I love me " + a);
love = (a, b) -> {
System.out.println(
"I love me " + a
);
System.out.println(
"I love me " + a
);
};
love.love(666, "haha");
}
}
interface Ilove {
void love(int a, String b);
}
学习视频:狂神说java https://www.bilibili.com/video/BV1V4411p7EF?p=10
网友评论