Java 8 四大核心函数式接口
测试代码
package rhyme;
import org.junit.Test;
import java.util.ArrayList;
import java.util.List;
import java.util.function.Consumer;
import java.util.function.Function;
import java.util.function.Predicate;
import java.util.function.Supplier;
/**
* Java8 四大核心接口
* @author RhymeChiang
* @date 2018/01/30
**/
public class Lambda2 {
/**
* 测试消费型函数接口
*/
@Test
public void testConsumerInterface(){
consumer(1000.00,(x) -> System.out.println("消费了" + x +"元"));
}
public void consumer(Double money,Consumer<Double> consumer){
consumer.accept(money);
}
/**
* test core interface of supplier
*/
@Test
public void testSupplierInterface(){
List<Integer> list = supplier(100,() -> (int)(Math.random()*100));
System.out.println(list);
}
public List<Integer> supplier(int loop, Supplier<Integer>supplier){
List<Integer> list = new ArrayList<>();
for (int i = 0; i <loop; i++) {
list.add(supplier.get());
}
return list;
}
/**
* test function interface
*/
@Test
public void testFunctionInterface(){
String abcde = function("abcde", (t1) -> t1.toUpperCase());
System.out.println(abcde);
}
public <T,R> R function(T t1, Function<T,R>function){
return function.apply(t1);
}
/**
* test predicate interface
*/
@Test
public void testPredicateInterface(){
boolean predicate = predicate(100, (x) -> {
if (x > 100) {
return true;
}
return false;
});
System.out.println(predicate);
}
public boolean predicate(Integer i, Predicate<Integer>predicate){
return predicate.test(i);
}
}