当前位置:   article > 正文

四大函数式接口_函数式接口有哪些

函数式接口有哪些

函数式接口是什么?


如果一个接口只有一个抽象方法,那么该接口就是一个函数式接口
函数式接口的实例可以通过 lambda 表达式、方法引用或者构造方法引用来创建。
如果我们在某个接口上声明了 @FunctionalInterface 注解,那么编译器就会按照函数式接口的定义来要求该接口
如果某个接口只有一个抽象方法,但我们并没有给该接口声明 @FunctionalInterface 注解,那么编译器依旧会将该接口看作是函数式接口

1:四大函数式接口:Consumer、Supplier、Function、Predicate

Function

开源码知道传入参数和返回类型 传入什么返回什么。

用匿名内部类new出函数式接口实现

lambda表达式简化

Predicate 传入泛型返回boolean类型

断定形接口

消费者接口

只有输入没有返回值

供给形接口

没有参数只有返回值

返回值类型为泛型。

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

  1. @FunctionalInterface
  2. public interface Consumer<T> {
  3. /**
  4. * Performs this operation on the given argument.
  5. *
  6. * @param t the input argument
  7. */
  8. void accept(T t);
  9. }

例子:

  1. package com.example.demo.java8;
  2. import java.util.function.Consumer;
  3. public class Java8InnerFunction {
  4. public static void main(String[] args) {
  5. Java8InnerFunction function=new Java8InnerFunction();
  6. function.consumMoney(1000,x-> System.out.println("消费了:"+x+"元"));
  7. }
  8. public void consumMoney(int money, Consumer consumer){
  9. consumer.accept(money);
  10. }
  11. }

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

  1. @FunctionalInterface
  2. public interface Supplier<T> {
  3. /**
  4. * Gets a result.
  5. *
  6. * @return a result
  7. */
  8. T get();
  9. }

例子:

  1. public static void main(String[] args) {
  2. Java8InnerFunction function=new Java8InnerFunction();
  3. int i = function.supplyRandomNum(() ->
  4. (int) (Math.random() * 100);
  5. );
  6. System.out.println("获得的随机数是:"+i);
  7. }
  8. public int supplyRandomNum(Supplier<Integer> supplier){
  9. return supplier.get();
  10. }

3、Function<T, R> 函数型接口 有入参 有返回值

  1. @FunctionalInterface
  2. public interface Function<T, R> {
  3. /**
  4. * Applies this function to the given argument.
  5. *
  6. * @param t the function argument
  7. * @return the function result
  8. */
  9. R apply(T t);
  10. }

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

  1. package com.example.demo.java8;
  2. import java.util.Random;
  3. import java.util.function.Consumer;
  4. import java.util.function.Function;
  5. import java.util.function.Supplier;
  6. public class Java8InnerFunction {
  7. public static void main(String[] args) {
  8. Java8InnerFunction function=new Java8InnerFunction();
  9. int i1 = function.functionCompute(5, x -> x * 10);
  10. System.out.println("计算后的结果值是:"+i1);
  11. }
  12. public int functionCompute(int a,Function<Integer,Integer> function){
  13. return function.apply(a);
  14. }
  15. }

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

  1. @FunctionalInterface
  2. public interface Predicate<T> {
  3. /**
  4. * Evaluates this predicate on the given argument.
  5. *
  6. * @param t the input argument
  7. * @return {@code true} if the input argument matches the predicate,
  8. * otherwise {@code false}
  9. */
  10. boolean test(T t);
  11. }

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

  1. public static void main(String[] args) {
  2. Java8InnerFunction function=new Java8InnerFunction();
  3. boolean b = function.predicateCompare(101, x -> x > 100);
  4. System.out.println("101比100大吗:"+b);
  5. }
  6. public boolean predicateCompare(int x,Predicate<Integer> predicate){
  7. return predicate.filter(x);
  8. }
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/IT小白/article/detail/411648
推荐阅读
相关标签
  

闽ICP备14008679号