本篇学习的是lambda表达式的简化推导以及总结。主要是为了简化代码
1、外部定义类实现接口
package lesson04;
import java.awt.*;
/*
* lambda表达式推导*/
public class TestLamda {
public static void main(String[] args) {
Love love = new Love();
love.love();
}
}
//定义接口
interface Ilove {
void love ();
}
//1、外部定义类实现接口
class Love implements Ilove {
@Override
public void love() {
System.out.println("I love you");
}
}
2、定义静态内部类
/*
* lambda表达式推导*/
public class TestLamda {
//2、定义静态内部类
static class Love implements Ilove{
@Override
public void love() {
System.out.println("Iloveyou 2 ");
}
}
public static void main(String[] args) {
Love love = new Love();
love.love();
}
}
//定义接口
interface Ilove {
void love ();
}
3、定义局部内部类
public class TestLamda {
public static void main(String[] args) {
//3、定义局部内部类
class Love implements Ilove{
@Override
public void love() {
System.out.println("iloveyou3");
}
}
Love love = new Love();
love.love();
}
}
//定义接口
interface Ilove {
void love ();
}
4、匿名内部类
public class TestLamda {
public static void main(String[] args) {
//4、匿名内部类
Ilove love = new Ilove() {//前提是new 接口或者父类
@Override
public void love() {
System.out.println("ilove you 4");
}
};
love.love();
}
}
//定义接口
interface Ilove {
void love ();
}
5、lambda表式
public class TestLamda {
public static void main(String[] args) {
//5、lambda表达式
Ilove love = ()->System.out.println("iloveyou5");
love.love();
}
}
//定义接口
interface Ilove {
void love ();
}
注意:1、使用lambda表达式简化的前提是接口为函数编程类接口,即接口中只有一个抽象类方法;
2、若方法体中只有一行,则可以去除花括号,若不是,则使用方法块包括起来
3、若重写的方法中一个参数的时候,可有省略参数类型,若含有多个参数,是否去掉参数类型要保持一直;都去掉的话,要使用括号