lambda表达式
含义
就是对匿名内部类的简化。
前提
必须满足函数式接口(接口里面只有一个语句体的叫做函数式接口)
简化过程
前提
1)声明函数式接口,接口中声明抽象方法,public String getValue(String str)
* 2)声明类 TestLambda,类中编写方法使用接口作为参数,讲一个字符串转成大写,并作为方法的返回值
* 3)再将一个字符串的第2个和第4个索引位置进行截取子串*/
public static void main(String[] args) {
String s = "dasds";
System.out.println(testString(s, new Getvalue() {
@Override
public String getvalue(String str) {
return str.toUpperCase();
}
}));
}
public static String testString(String str,Getvalue g){
return g.getvalue(str);
}
interface GetValue{
public String getValue(String str);
}
new Getvalue() {
@Override
public String getvalue(String str) {
return str.toUpperCase();
}
}
这个代码为匿名函数下面开始说简化过程(注意这个接口时是函数式接口因此可以用lambda表达式简化)
- 将new和方法名等省略
(String s)->{return s.toUppercase();}
- 如果语句体只有一句将大括号去掉,如果是return语句则省略return
(String s)->s.toUppercase()
- 如果有多个参数或者一个参数且类型相同 ,参数类型省略
s->s.toUppercase()
此为lambda表达式