Java8新特性-002-四大内置核心函数式接口

四大内置核心函数式接口

函数式接口参数类型返回类型用途
Consumer 消费型接口Tvoid对类型为T的对象应用操 作,包含方法: void accept(T t)
Supplier 供给型接口T返回类型为T的对象,包 含方法:T get()
Function 函数型接口TR对类型为T的对象应用操 作,并返回结果。结果 是R类型的对象。包含方 法:R apply(T t)
Predicate 断定型接口Tboolean确定类型为T的对象是否 满足某约束,并返回 boolean 值。包含方法 boolean test(T t)

其他接口

函数式接口参数类型返回类型用途
BiFunctionT, UR对类型为 T, U 参数应用操作,返回 R 类型的结果。包含方法为R apply(T t, U u);
UnaryOperator(Function子接口)TT对类型为T的对象进行一元运算,并返回T类型的结果。包含方法为T apply(T t);
BinaryOperator(BiFunction 子接口)T, TT对类型为T的对象进行二元运算,并返回T类型的结果。包含方法为T apply(T t1, T t2);
BiConsumerT, Uvoid对类型为T, U 参数应用操作。包含方法为void accept(T t, U u)
ToIntFunction ToLongFunction ToDoubleFunctionTint long double分 别 计 算 int 、 long 、double、值的函数
IntFunction LongFunction DoubleFunctionint long doubleR参数分别为int、long、double 类型的函数

测试代码

TestFourFunc.java

package java8.test;

import java.util.function.Consumer;
import java.util.function.Function;
import java.util.function.Predicate;
import java.util.function.Supplier;

import org.junit.Test;

public class TestFourFunc {

    /**
     * Java8中内置4大函数接口
     *      1.Consumer<T>:消费型接口
     *          方法:void accept(T t);
     *          功能:给一个参数,完成一项操作,没有返回值。有去无回
     *      2.Supplier<T>:供给型
     *          方法:T get();
     *          功能:根据泛型参数,返回一个值给调用者。无中生有
     *      3.Function(T,R):函数型接口;
     *          方法:R apply(T t);
     *          功能:根据参数T,返回一个类型R。
     *      4.Predicate<T>:断言型接口
     *          方法:boolean test(T t);
     *          功能:对输入参数T,进行判断操作,返回一个boolean值
     */

    /**
     * 1.消费型接口:Consumer
     * java.util.function Interface Consumer<T>:
     * 参数类型
     *      T - 操作输入的类型
     * Functional Interface:
     *      这是一个功能界面,因此可以用作lambda表达式或方法引用的赋值对象。
     */
    @Test
    public void testConsumer() {
        /*
         * void accept(T t)
         *      对给定的参数执行此操作。
         * 参数
         *      t - 输入参数
         */
        Consumer<String> con = (str) -> System.out.println("你好," + str);
        con.accept("消费型接口~");
    }

    /**
     * 2.生产型接口:Supplier
     * @FunctionalInterface 
     * public interface Supplier<T>
     * 代表结果供应商。
     * 没有要求每次调用供应商时都会返回新的或不同的结果。
     * 这是一个functional interface的功能方法是get() 。
     * 从以下版本开始:
     * 1.8
     */
    @Test
    public void testSupplier() {
        /*
         * T get()
         *      获得结果。
         */
        Supplier<String> sup = () -> "生产型接口~";
        String string = sup.get();
        System.out.println(string);
    }

    /**
     * Function<T,R>:函数型接口
     *  java.util.function
     * Interface Function<T,R>
     * 参数类型
     *      T - 函数输入的类型
     *      R - 函数的结果类型
     */
    @Test
    public void testFunction() {
        /**
         * R apply(T t)
         *      将此函数应用于给定的参数。
         * 参数
         *      t - 函数参数
         * 结果
         *      功能结果
         */
        Function<Integer,String> func = (str) -> str + ",函数性接口~";
        String apply = func.apply(5);
        System.out.println(apply);
    }

    /**
     * Predicate<T>:断言型接口
     *  java.util.function
     * Interface Predicate<T>
     * 参数类型
     *      T - T输入的类型
     * Functional Interface:
     *      这是一个FunctionInterface,因此可以用作lambda表达式或方法引用的赋值对象。
     */
    @Test
    public void testPredicate() {
        /**
         * boolean test(T t)
         * 在给定的参数上评估这个谓词。
         * 参数
         *      t - 输入参数
         * 结果
         *      true如果输入参数匹配谓词,否则为 false
         */
        Predicate<Integer> pre = (a) -> a > 0;
        boolean test = pre.test(10);
        System.out.println("10 > 0 : " + test);
    }
}

微信公众号:JavaWeb架构师


其它

  • 源码下载
关注下方公众号,回复:Java8.code

完整教程PDF版本下载

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值