Lambda表达式
接口中只要方法不超过3个我们都可以用匿名内部类的方式来实现它,jdk8以后引入了Lambda表达式,他是匿名内部类的简写。
Lambda是一个匿名内部类的简写,可以把Lambda表达式理解为是一段可以传递的代码(将代码像数据一样进行传递)。可以写出更简洁、更灵活的代码。
注意:inteface定义的接口中方法必须都是抽象的,那么接口中可不可以有不是抽象的方法呢,可以有,但是方法要用default修饰。
interface Test{
abstract void test1();//abstract可以省略
void test2();
default void test3(){
System.out.println("接口中的非抽象方法!,我是不用重写的~");
}
}
class myTest implements Test{
@Override
public void test1() {
System.out.println("抽象方法1");
}
@Override
public void test2() {
System.out.println("抽象方法2");
}
}
public class Demo3 implements Test{ //main方法类也可以实现接口,可以在本类中创建自己的对象调用方法
public static void main(String[] args) {
myTest my=new myTest();
my.test1();
my.test2();
my.test3();
System.out.println("-------------------------------------");
Demo3 demo3=new Demo3();//创建本类对象
demo3.test1();
demo3.test2();
demo3.test3();
}
@Override
public void test1() {
System.out.println("这是main方法类中的抽象方法1");
}
@Override
public void test2() {
System.out.println("这是main方法类中的抽象方法2");
}
}
Lambda表达式:
从匿名类到Lambda转换
例如1
例如2:
Lambda表达式语法:
Lambda表达式在Java中引入了新的语法元素和操作符。“->”该操作符被称为Lambda操作符或者是箭头符号,将Lambda表达式分为两部分:
左侧:指定了Lambda表达式所需要的所有参数
右侧:指定了Lambda体,即Lambda表达式要执行的功能。
语法格式1:无参数(),无返回值void,Lambda体只有一条语句
语法格式2:一个参数(arg),无返回值void