java函数式接口

软件发布|下载排行|最新软件

当前位置:首页IT学院IT技术

java函数式接口

傲娇的喵酱   2022-05-23 我要评论

1、什么是函数式接口

函数接口是只有一个抽象方法的接口,用作 Lambda 表达式的类型。使用@FunctionalInterface注解修饰的类,编译器会检测该类是否只有一个抽象方法或接口,否则,会报错。可以有多个默认方法,静态方法。

 有且只有一个抽象方法的接口

场景:

适用于函数式编程场景(使用lambda表达式编程)的接口,函数式接口可以适用于lambda使用的接口。

只有确保接口中有且只有一个抽象方法,java中的lambda才能顺利推到

2.java提供四种类型的函数式接口

package day06.java8;
/*
java提供四种类型的函数式接口
Function<T,R>, 转换类型,传入一个T类型,传出一个R类型
Consumer<T> 消费型
Supplier<T>,什么都不传,给返回一个对象
Predicate<T> 断言型,传入一个T类,返回断言true false
 */
 
import org.apache.commons.lang3.RandomStringUtils;
 
import java.util.function.Consumer;
import java.util.function.Function;
import java.util.function.Predicate;
import java.util.function.Supplier;
 
public class Demo04 {
    public static void main(String[] args) {
        // Function<T,R>, 转换类型
        Function<String,Integer> function =str -> str.length();
        Integer abc = function.apply("abc");
        System.out.println(abc);
        // Consumer<t> 消费型
        Consumer<String> consumer =str-> System.out.println(str);
        consumer.accept("abc");
        //Supplier<T>,什么都不传,给返回一个对象
        // 这里随机返回一个长度为8的字符串
        Supplier<String> supplier = ()-> RandomStringUtils.randomAlphanumeric(8);
        String s = supplier.get();
        System.out.println(s);
        // Predicate<T> 断言型,传入一个T类,返回断言true false
        Predicate<String> predicate =str->str.length()>3;
        boolean test = predicate.test("abcd");
        System.out.println(test);
 
 
    }
}

Copyright 2022 版权所有 软件发布 访问手机版

声明:所有软件和文章来自软件开发商或者作者 如有异议 请与本站联系 联系我们