JDK8新特性 - 函数式接口

本文详细介绍了函数式接口的概念,包括其定义与示例,并重点解析了Java内置的四大核心函数式接口:Consumer、Supplier、Function及Predicate的特点与应用场景。此外还介绍了如何使用@FunctionalInterface注解来验证接口是否符合函数式接口的要求。
部署运行你感兴趣的模型镜像

目录

1.函数式接口基础概念

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

3.@FunctionalInterface


1.函数式接口基础概念

      一个接口中,要求实现类实现的抽象方法有且只有一个,这样的接口称为函数式接口,上Demo:

//接口中有且只有一个实现类必须实现的方法,是函数式接口
interface test1{
    void test();
}
//接口中有两个实现类必须实现的方法,非函数式接口
interface test2{
    void test1();
    void test2();
}
//接口中没有实现类必须实现的方法,非函数式接口
interface test3{

}
//接口中虽然没有方法,但可以从父接口继承到一个抽象方法,是函数式接口
interface test4 extends test1{

}
//接口中虽然有两个方法,但被default定义过的方法是不需要子类实现的,所以这个接口需要实现类实现的抽象方法只有test5()一个,是函数式接口
interface test5{
    void test5();
    default void test(){}
}
//接口中虽然有两个方法,但toString()可以从父类Object继承,实现类在实现此接口时此方法可以不重写,所以这个接口需要实现类实现的抽象方法只有test6()一个,是函数式接口
interface test6{
    void test6();
    String toString();
}
//接口中只有一个方法,toString()可以从父类Object继承,实现类实现该接口时可以重写也可以不重写,那么此接口就不是函数式接口
interface test7{
    String toString();
}
//此接口中有四个方法,test8()为实现类必须重写的方法,test9()有默认实现无需重写,test10()静态方法无需重写,toString()从Object继承可重写也可不重写,所以实现类必须重写的方法只有test8()一个,是函数式接口
interface test8{
    void test8();
    default void test9(){}
    static void test10(){}
    String toString();
}

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

函数式接口参数类型返回类型用途
ConsumerTvoid对类型T参数操作,无返回结果,包含方法 void accept(T t)
SupplierT返回T类型参数,方法时 T get()
FunctionTR对类型T参数操作,返回R类型参数,包含方法 R apply(T t)
PredicateTboolean断言型接口,对类型T进行条件筛选操作,返回boolean,包含方法 boolean test(T t)

Consumer<T>:消费型接口(void accept(T t))

特点:有参数,无返回值类型的接口

Supplier<T> 供给型接口(T get())

特点:无参数,无返回值的接口

Function<T, R>:函数型接口(R apply(T t))

特点:方法的参数是函数

Predicate<T>:断言型接口(boolean test(T t))

特点:输入一个参数,输出一个boolean类型的返回值。

3.@FunctionalInterface

      作用:写在接口之前,可以判断当前接口是否为函数式接口,如果不是函数式接口则会报错,功能类似于@Override判断是否为重写。

您可能感兴趣的与本文相关的镜像

ACE-Step

ACE-Step

音乐合成
ACE-Step

ACE-Step是由中国团队阶跃星辰(StepFun)与ACE Studio联手打造的开源音乐生成模型。 它拥有3.5B参数量,支持快速高质量生成、强可控性和易于拓展的特点。 最厉害的是,它可以生成多种语言的歌曲,包括但不限于中文、英文、日文等19种语言

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值