只包含一个抽象方法的接口,成为函数式接口;
可以通过 Lambda 表达式来创建该接口的对象。(若 Lambda表达式爆出一个受检异常,那么该异常需要在目标接口的抽象方法上进行声明);
消费型接口
// Consumner<T> 消费型接口 @Test public void test1(){ happy(1000,(m) -> { System.out.println("刚哥喜欢大保健,每次消费"+m+"元"); }); } public void happy(double money, Consumer<Double> consumer){ consumer.accept(money); }
供给型接口
// Supplier<T> 供给型接口 @Test public void test2() { List<Integer> numList = getNumList(10, () -> { return new Random().nextInt(10); }); System.out.println(numList); } //需求:产生指定个数的整数,并放入集合中 public List<Integer> getNumList(int num, Supplier<Integer> supplier) { List<Integer> list = new ArrayList<>(); for (int i = 0; i < num; i++) { Integer integer = supplier.get(); list.add(integer); } return list; }
函数型接口.
// 函数型接口 @Test public void test3(){ String handler = strHandler(" 无比巨帅的小飞仔 ", (m) -> { return m.trim().substring(1,5); }); System.out.println(handler); } //需求 用于处理字符串 public static String strHandler(String str, Function<String,String> function){ return function.apply(str); }
断言型接口
// 断言型接口 @Test public void test4() { List<String> list = Arrays.asList("Hello", "xuefei", "zhenhsuai"); List<String> strList = filterStr(list, (m) -> m.length() > 5); System.out.println(strList); } // 需求:将满足条件的字符串,放入集合中去 public List<String> filterStr(List<String> list, Predicate<String> predicate) { List<String> strList = new ArrayList<>(); for (String s : list) { if (predicate.test(s)) strList.add(s); } return strList; }
其他函数式接口
原文:https://www.cnblogs.com/lililixuefei/p/13185879.html