本章概述:本章主要讲了Lambda表达式在Java中的使用,Lambda表达式的介绍,Lambda表达式的使用,函数式接口,Lambda表达式的原理。
目录
本章概述:
一、Lambda
1、LambdaTest
package com.class4.lambda;
import com.sun.scenario.effect.impl.sw.sse.SSEBlend_SRC_OUTPeer;
import java.util.concurrent.Callable;
import java.util.function.Consumer;
import java.util.function.Function;
import java.util.function.Supplier;
/**
* @Auther: Yu Panpan
* @Date: 2022/5/3 - 05 - 03 - 16:08
* @Description: com.class4.lambda
* @version: 1.0
*/
public class LambdaTest {
public static void main(String[] args) throws Exception {
Runnable runnable = new Runnable() {
@Override
public void run() {
System.out.println("running1!");
}
};
runnable.run();
Runnable runnable2 = ()-> System.out.println("running2!");
Runnable runnable3 = ()->{
System.out.println("running3!");
};
runnable2.run();
runnable3.run();
Callable<String> callable = new Callable<String>() {
@Override
public String call() throws Exception {
return "jason1";
}
};
System.out.println(callable.call());
Callable<String> callable1 = ()->{return "jason2";};
Callable<String> callable2 = ()->"jason3";
System.out.println(callable1.call());
System.out.println(callable2.call());
StudentDao dao = new StudentDao() {
@Override
public void insert(Student student) {
System.out.println("插入1个学生记录:" + student);
}
};
dao.insert(new Student());
StudentDao dao1 = (student)-> System.out.println("插入:" + student);
StudentDao dao2 = (Student student)-> System.out.println("插入:" + student);
StudentDao dao3 = (student)->{
System.out.println("插入:" +student);
};
StudentDao dao4 = (Student student)-> {System.out.println("插入:" +student);};
StudentDao dao5 = student-> System.out.println("插入:" + student);
StudentDao dao6 = student-> {System.out.println("插入:" + student);};
dao1.insert(new Student());
dao2.insert(new Student());
dao3.insert(new Student());
dao4.insert(new Student());
dao5.insert(new Student());
dao6.insert(new Student());
TeacherDao teacherDao = new TeacherDao() {
@Override
public int get(Teacher teacher) {
return 1;
}
};
System.out.println(teacherDao.get(new Teacher()));
TeacherDao teacherDao1 =(teacher)->{return 2;};
TeacherDao teacherDao2 = (teacher)->3;
TeacherDao teacherDao3 = teacher->{return 4;};
TeacherDao teacherDao4 = teacher->5;
System.out.println(teacherDao1.get(new Teacher()));
System.out.println(teacherDao2.get(new Teacher()));
System.out.println(teacherDao3.get(new Teacher()));
System.out.println(teacherDao4.get(new Teacher()));
/*
* 在JDK中,提供了一些代表输入和输出的接口,他们本身是没有什么意义的,
* 只是为了方便的使用lambda表达式来编写代码,从而获取对应的执行结果。
*
*/
// Supplier<Integer> supplier = new Supplier<Integer>() {
// @Override
// public Integer get() {
// return 1;
// }
// };
Supplier<Integer> supplier = ()->1;
System.out.println(supplier.get());
// Consumer<String> consumer = new Consumer<String>() {
// @Override
// public void accept(String s) {
// System.out.println(s);
// }
// };
Consumer<String> consumer = (s)-> System.out.println(s);
consumer.accept("jason1");
// Function<Integer,String> function = new Function<Integer, String>() {
// @Override
// public String apply(Integer integer) {
// return integer + "jason2";
// }
// };
Function<Integer,String> function = (i)->i+"jason3";
Function<Integer,String> function1 = (Integer i)->{return i+"jason4";};
System.out.println(function.apply(200));
System.out.println(function1.apply(300));
}
}
2、StudentDao
package com.class4.lambda;
/**
* @Auther: Yu Panpan
* @Date: 2022/5/3 - 05 - 03 - 16:18
* @Description: com.class4.lambda
* @version: 1.0
*/
@FunctionalInterface
public interface StudentDao {
public void insert(Student student);
}
3、Student
package com.class4.lambda;
/**
* @Auther: Yu Panpan
* @Date: 2022/5/3 - 05 - 03 - 16:19
* @Description: com.class4.lambda
* @version: 1.0
*/
public class Student {
}