Lambda表达式在JDK8之后出现
实现类--->静态内部类--->局部内部类--->匿名内部类--->Lambda表达式
实现类
public class TestLambda {
public static void main(String[] args) {
Like like = new Like();
like.lambda();
}
}
//1.定义一个函数式接口(只有一个抽象方法)
interface ILike{
public void lambda();
}
//2.定义类实现接口(实现类)
class Like implements ILike{
@Override
public void lambda() {
System.out.println("I like study");
}
}
静态内部类
public class TestLambda {
//2.静态内部类
static class Like implements ILike{
@Override
public void lambda() {
System.out.println("I like study");
}
}
public static void main(String[] args) {
Like like = new Like();
like.lambda();
}
}
//1.定义一接口
interface ILike{
public void lambda();
}
局部内部类
public class TestLambda {
public static void main(String[] args) {
//2.局部内部类
class Like implements ILike{
@Override
public void lambda() {
System.out.println("I like study");
}
}
Like like = new Like();
like.lambda();
}
}
//1.定义一接口
interface ILike{
public void lambda();
}
匿名内部类-
public class TestLambda {
public static void main(String[] args) {
//2.匿名内部类,没有类的名称,必须借助接口或者父类
ILike like = new ILike(){
@Override
public void lambda() {
System.out.println("I like study");
}
};
like.lambda();
}
}
//1.定义一接口
interface ILike{
public void lambda();
}
Lambda表达式
public class TestLambda {
public static void main(String[] args) {
//2.lambda表达式
ILike like =()->{System.out.println("I like study");};
like.lambda();
}
}
//1.定义一接口
interface ILike{
public void lambda();
}
总结:
只能有一行时简化称为一行,否则代码块{}包裹
必须是函数式接口(只有一个方法)
多个参数,参数类型一起操作,要么都保留,要么都删除
完整代码
public class TestLambda {
//3.静态内部类
static class Like2 implements ILike{
@Override
public void lambda() {
System.out.println("I like study2");
}
}
public static void main(String[] args) {
//4.局部内部类
class Like3 implements ILike{
@Override
public void lambda() {
System.out.println("I like study3");
}
}
ILike like = new Like();
like.lambda();
like = new Like2();
like.lambda();
like = new Like3();
like.lambda();
//5.匿名内部类,没有类的名称,必须借助接口或者父类
like = new ILike() {
@Override
public void lambda() {
System.out.println("I like study4");
}};
like.lambda();
//6.lambda简化
like =()->{System.out.println("I like study5");};
like.lambda();
}
}
//1.定义一接口
interface ILike{
public void lambda();
}
//2.定义类实现接口(实现类)
class Like implements ILike{
@Override
public void lambda() {
System.out.println("I like study1");
}
}