Lambda表达式,可以避免匿名类太多,使用也方便。
Lambda表达式的要求,要求接口必须是函数式接口(即只能有一个抽象方法)。
Lambda表达式的形成
匿名内部类
public class Demolambda {
public static void main(String[] args) {
iLove love = new iLove() {
@Override
public void love() {
System.out.println("我爱你,是多么痛苦的信仰");
}
};
love.love();
}
}
interface iLove{
void love();
}
简化1
public class Demolambda {
public static void main(String[] args) {
iLove love;
love = ()-> {
System.out.println("我爱你,是多么痛苦的信仰");
};
love.love();
}
}
interface iLove{
void love();
}
简化二,去大括号
public class Demolambda {
public static void main(String[] args) {
iLove love;
love = ()-> System.out.println("我爱你,是多么痛苦的信仰");
love.love();
}
}
interface iLove{
void love();
}
有参
public class Demolambda {
public static void main(String[] args) {
iLove love;
love = (int a)-> System.out.println("我爱你,是多么痛苦的信仰"+a);
love.love(521);
}
}
interface iLove{
void love(int a);
}
有参简化1,去类型
public class Demolambda {
public static void main(String[] args) {
iLove love;
love = ( a)-> System.out.println("我爱你,是多么痛苦的信仰"+a);
love.love(521);
}
}
interface iLove{
void love(int a);
}
有参简化2,去括号
public class Demolambda {
public static void main(String[] args) {
iLove love;
love = a-> System.out.println("我爱你,是多么痛苦的信仰"+a);
love.love(521);
}
}
interface iLove{
void love(int a);
}
注意:1、如果有多个参数时,括号不能去
2、参数类型要有都有,要去都去
3、方法体只有一行代码时,才可以去掉大括号



