java8 四大内置核心函数式接口

前言

在java8中使用lambda表达式可以极大的简化我们的开发代码,使用Lambda表达式需要使用函数式接口,java8为我们定义好了4类内置函数式接口,这4类接口基本能够满足平时的开发需要,如果有比较特殊得情况我们可以自己去定义函数式接口。

1、consumer 消费型接口,有入参,返回值为空

@FunctionalInterface
public interface Consumer {
 
    /**
     * Performs this operation on the given argument.
     *
     * @param t the input argument
     */
    void accept(T t);
}

例子:

package com.example.demo.java8;

import java.util.function.Consumer;

public class Java8InnerFunction {

    public static void main(String[] args) {
        Java8InnerFunction function=new Java8InnerFunction();
        function.consumMoney(1000,x-> System.out.println("消费了:"+x+"元"));
    }

    public void consumMoney(int money, Consumer consumer){
        consumer.accept(money);
    }
}

2、Supplier 提供型接口 空参但是有返回值

@FunctionalInterface
public interface Supplier {

   /**
    * Gets a result.
    *
    * @return a result
    */
   T get();
}

例子:

 public static void main(String[] args) {
        Java8InnerFunction function=new Java8InnerFunction();
        int i = function.supplyRandomNum(() -> 
             (int) (Math.random() * 100);
        );
        System.out.println("获得的随机数是:"+i);
    }

    public int supplyRandomNum(Supplier supplier){
        return supplier.get();
    }

3、Function 函数型接口 有入参 有返回值

@FunctionalInterface
public interface Function {
 
    /**
     * Applies this function to the given argument.
     *
     * @param t the function argument
     * @return the function result
     */
    R apply(T t);
}

 例子:计算一个数的10倍,并输出结果

package com.example.demo.java8;

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

public class Java8InnerFunction {

    public static void main(String[] args) {
        Java8InnerFunction function=new Java8InnerFunction();
     
        int i1 = function.functionCompute(5, x -> x * 10);
        System.out.println("计算后的结果值是:"+i1);
    }

    public int functionCompute(int a,Function function){
        return function.apply(a);
    }
}

4、Predicat 断言型接口 返回真假

@FunctionalInterface
public interface Predicate {
 
    /**
     * Evaluates this predicate on the given argument.
     *
     * @param t the input argument
     * @return {@code true} if the input argument matches the predicate,
     * otherwise {@code false}
     */
    boolean test(T t);
}

 例子:计算一个数是否比100大,并输出真假

 public static void main(String[] args) {
        Java8InnerFunction function=new Java8InnerFunction();
       
        boolean b = function.predicateCompare(101, x -> x > 100);
        System.out.println("101比100大吗:"+b);
    }

   
    public boolean predicateCompare(int x,Predicate predicate){
      return  predicate.filter(x);

    }

你可能感兴趣的:(java基础,java,intellij-idea,java-ee)