Java8常用函数式接口介绍

    xiaoxiao2023-11-10  165

    java8的新特性之一就是lambada表达式。在了解基本lambada语法基础上,我为大家分享一下jdk自带的函数式接口。

    1.什么样的接口叫做函数式接口? 答:该接口只有一个要实现的方法。 注意措辞,要实现的方法,java8在接口的方法里面添加了一个default方法,default方法就只默认实现的方法,这种默认方法给java8带来了很多方便,比如在以前的接口加方法不 用重新实现等。 2.上图

    接口参数返回类型说明PredicateTboolean断言:接受一个参数返回boolean类型ConsumerTvoid消费一个数据:比如打印一个数据Function<T, R>TR输入一个T类型返回R类型的函数UnaryOperatorTT输入和输出都是T类型,继承FunctionBiFunction<T, U, R>T,UR两个输入一个输出BinaryOperatorT,TT输入输出相同类型的二元函数

    3.demo 1.断言函数

    Predicate<Integer> predicate = o->o>8; System.out.println(predicate.test(9));` //返回为真 //改进为方法引用, public class Test2 { public static void main(String[] args) { Predicate<Integer> predicate = Test1::comparaInteger; System.out.println(predicate.test(9)); } } class Test1{ private String name; private Integer zzz; public Test1(String name) { this.name = name; } public Test1(String name, Integer zzz) { this.name = name; this.zzz = zzz; } public Test1() { } public static boolean comparaInteger(Integer integer){ return integer>8; } Integer getZzz(Integer i,Integer j){ return Math.max(Math.max(i,j),zzz); } }

    2.消费函数

    public static void main(String[] args) { Consumer<String> consumer = System.out::println; consumer.accept("我系渣渣辉"); //结果是打印,我系渣渣辉这句话 }

    3.提供者

    Supplier<Test1> supplier = Test1::new; System.out.println(supplier); //调用无参构造返回一个对象,

    4.Function

    Function<String,Test1> function = Test1::new; function.apply("渣渣辉"); //还是返回一个Test1,这里调用了一个有参构造

    5.BiFunction

    BiFunction<Integer,Integer,Integer> function = new Test1("渣渣辉",99)::getZzz; System.out.println(function.apply(56,159));

    方法都差不多,多用几次就熟练了。

    最新回复(0)