Java8值函数式接口

Java8值函数式接口

  • 如果一个接口中,只声明了一个抽象方法,则此接口就称为函数式接口
  • 在接口上声明@FunctionalInterface注解,校验该接口是否函数式接口
  • 示例:
@FunctionalInterface
public interface MyInterface {

    void info();

    // void info(); 只能有一个抽象方法,才被称之为函数式接口
}

+Java内置四大核心函数式接口

java内置的4大核心函数式接口

消费型接口Consumer<T> void accetp(T t)
    @Test
    public void test1() {
        happyTime(500, money -> {
            System.out.println("消费了" + money);
        });
    }

    public void happyTime(double money, Consumer<Double> con) {
        con.accept(money);
    }
供给型接口Supplier<T> T get()
函数型接口Function<T,R> R apply(T t)
断定型接口Predicate<T> boolean test(T t)
    @Test
    public void test2() {
        List<String> list = Arrays.asList("北京", "南京", "天津", "东京", "普京");
        List<String> filterString = filterString(list, s -> s.contains("京"));
        System.out.println("过滤后的字符串集合=" + filterString);
    }

    // 根据给定的规则,过滤集合中的字符串,此规则由Predicate的方法决定
    public List<String> filterString(List<String> list, Predicate<String> pre) {
        ArrayList<String> filterList = new ArrayList<>();
        for (String s : list) {
            if (pre.test(s)) {
                filterList.add(s);
            }
        }
        return filterList;
    }
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容