1、lambda :实现函数式接口,并创建对象(匿名内部类的简化写法)
2、语法:
接口名引用=(形参列表)->{
//方法实现
};
->左侧:小括号里指定方法执行所有要的形参
->右侧:花括号中定义方法的实现
注:使用1ambda实现接口,接口中只能有一一个抽象方法
●使用细节:如果方法实现只有- -行代码, }可以省略
●有参无返回值的方法:将方法覆盖后的参数加入lambda表达式中->前的小括号里
。使用细节:Lambda表示式中参数的数据类型可以省略,因为编译器可以进行数据类型推断
。使用细节:L ambda表示式中参数只有一一个时,可以省略数据类型+()
●有参有返回值:只需要在方法实现中正常添加return语句就好
。使用细节:当方法实现中只有一条返回语句时 ,省略{}+return;
package testlambda;
public class TestLambda1 {
public static void main(String[] args) {
// class ImplA implements IA{
// public void ma() {
// System.out.println("ma is invoke~~~");
// }
// }
// IA ia = new ImplA();
// ia.ma();
// IA ia=new IA(){
// public void ma() {
// System.out.println("ma() is invoke~~~");
// }
// };
// ia.ma();
//无参无返回值的方法
IA ia=()->{System.out.println("ma() is invoke~~~");};
ia.ma();
//使用细节,如果方法实现只有一行代码,{}可以省略
IA ia2=()->System.out.println("ma() is invoke!!!");
ia2.ma();
}
}
interface IA{
void ma();
}
package test;
import java.net.InterfaceAddress;
public class TestLambda1 {
public static void main(String[] args) {
//IA接口的实现类--局部内部类
// class ImplA implements IA{
// public void ma() {
// System.out.println("ma() is invoke~~~~");
// }
// }
// ImplA a = new ImplA();
//IA接口的实现类--匿名内部类
// IA ia=new IA() {
// public void ma() {
// System.out.println("ma() is invoke~~~~");
// }
// };
// ia.ma();
//IA接口的实现类--lambda表达式
IA ia=()->{
System.out.println("ma() is invoke~~~~");
};
ia.ma();
//使用细节
IA ia1=()->System.out.println("ma() is invoke~~~~");;
ia1.ma();
//有参
IB ib=(int a,double b)->{
System.out.println(a+b);
};
ib.mb(1, 3.5);
//使用细节
IB ib1=(a,b)->{
System.out.println(a+b);
};
ib1.mb(1, 3.5);
IC ic1=a->{
System.out.println(a);
};
ic1.mc(1);
//有返回值
ID id=(a,b)->{
return a+b;
};
System.out.println(id.md(1, 2));
ID id1=(a,b)->a+b;
System.out.println(id1.md(1, 5));
}
}
interface IA{
void ma();
}
/*IA接口普通实现类
* class ImplA implements IA{ public void ma() {
* System.out.println("ma() is invoke~~~~"); } }
*/
interface IB{
void mb(int a,double b);
}
interface IC{
void mc(int a);
}
interface ID{
int md(int a,int b);
}