Lambda表达式操作的必须是函数式接口,也就是只有一个抽象方法的接口
package com.mock;
import org.junit.jupiter.api.Test;
import java.util.function.Consumer;
import java.util.function.Function;
import java.util.function.Predicate;
import java.util.function.Supplier;
public class TestLambda {
@Test
public void test1() {
//lambda表达式操作的必须是函数式接口,也就是只有一个抽象方法的接口
new Thread(() -> System.out.println("Runnable")).start();
}
/**
* 内置4大函数式接口
*Consumer<T> void accept(T t); 消费型,传入一个参数T
*
* Supplier<T> T get();提供型,返回一个T
*
* Function<T, R> R apply(T t);函数型,传入一个参数T,返回一个值R
*
* Predicate<T> boolean test(T t);断言型,传入一个参数T,返回一个布尔值
*
*/
@Test
public void test2() {
testConsumer("100min",(time)-> System.out.println("花费"+time+"时间"));
System.out.println(testSupplier("apple",()->"获得了"));
System.out.println(testFunction("你好",(t)->t+"世界"));
System.out.println(testPredicate("Mock",(t)->"Mock".equals(t)));
}
private void testConsumer(String time,Consumer<String> consumer){
consumer.accept(time);
}
private String testSupplier(String apple, Supplier<String> supplier){
return supplier.get()+apple;
}
private String testFunction(String source, Function<String,String> function){
return function.apply(source);
}
private boolean testPredicate(String str, Predicate<String> predicate){
return predicate.test(str);
}
}