lamda表达式可以简化匿名内部类繁杂的代码
匿名内部类的写法:
interface IMessage {
public void print();
}
public class lamda {
public static void main(String[] args) {
fun(new IMessage() {
@Override
public void print() {
System.out.println("Hello world!");
}
});//匿名内部类的写法
}
public static void fun(IMessage ims) {
ims.print();
}
}
使用lamda表达式:
interface IMessage {
public void print();
}
public class lamda {
public static void main(String[] args) {
//lamda表达式
fun(()->System.out.println("Hello World!"));
}
public static void fun(IMessage ims) {
ims.print();
}
}
lamda语法的三种形式:
- (参数)->单行语句
- (参数)->{多行语句}
- (参数)->表达式
1.(参数)->单行语句
interface IMessage {
public void print(String s);
}
public class lamda {
public static void main(String[] args) {
//lamda表达式带参数
fun((s)->System.out.println(s));
}
public static void fun(IMessage ims) {
ims.print("Hello World!");
}
}
2.(参数)->{多行语句}
interface IMessage {
public void print(String s);
}
public class lamda {
public static void main(String[] args) {
//lamda表达式带参数代码块
fun((s)->{
s = s.toUpperCase();//大写
System.out.println(s);//打印
});
}
public static void fun(IMessage ims) {
ims.print("Hello World!");
}
}
3.(参数)->表达式
interface IMessage {
public int add(int s1,int s2);
}
public class lamda {
public static void main(String[] args) {
//lamda表达式
fun((s1,s2)->s1+s2);
}
public static void fun(IMessage ims) {
System.out.println(ims.add(10, 20));
}
}