• java基础---->java8中的函数式接口


      这里面简单的讲一下java8中的函数式接口,Function、Consumer、Predicate和Supplier。

    函数式接口例子

    一、Function:接受参数,有返回参数

    package com.linux.huhx.function;
    
    import java.util.function.Function;
    
    public class FunctionDemo {
    
      private static int operateValue(int value, Function<Integer, Integer> function) {
        return function.apply(value);
      }
    
      private static int operateValue(int value, Function<Integer, Integer> srcFunc, Function<Integer, Integer> destFunc) {
        return srcFunc.andThen(destFunc).apply(value);
      }
    
      public static void main(String[] args) {
        int value = 10;
        int innerResult = operateValue(value, new Function<Integer, Integer>() {
          @Override
          public Integer apply(Integer t) {
            return 20 + t;
          }
        });
        System.out.println(innerResult); // 30
    
        int lambdaResult = operateValue(value, t -> t + 20);
        System.out.println(lambdaResult); // 30
    
        int andThenResult = operateValue(value, val -> val + 20, val -> val + 30);
        System.out.println(andThenResult); // 60
      }
    }

    二、Consumer:接受参数,没有返回

    package com.linux.huhx.function;
    
    import java.util.function.Consumer;
    
    public class ConsumerDemo {
    
      private static void printValue(String value, Consumer<String> consumer) {
        consumer.accept(value);
      }
    
      public static void main(String[] args) {
        printValue("huhx", s -> System.out.println(s.toUpperCase())); // HUHX
      }
    }

    三、Predicate:接受参数,返回boolean

    package com.linux.huhx.function;
    
    import java.util.function.Predicate;
    
    public class PredicateDemo {
    
      private static boolean predicateValue(int value, Predicate<Integer> predicate) {
        return predicate.test(value);
      }
    
      public static void main(String[] args) {
        System.out.println(predicateValue(17, x -> x >= 18)); // false
      }
    }

    四、Supplier:不接受参数,有返回值

    package com.linux.huhx.function;
    
    import java.util.function.Supplier;
    import org.springframework.util.StringUtils;
    
    public class SupplierDemo {
    
      private static String getOrDefault(String value, Supplier<String> supplier) {
        return StringUtils.isEmpty(value) ? supplier.get() : value;
      }
    
      public static void main(String[] args) {
        String name = "";
        System.out.println(getOrDefault(name, () -> "huhx")); // huhx
      }
    }

    友情链接

  • 相关阅读:
    Swift
    Swift
    Swift
    Mac
    Mac
    Sqlite数据库 找不到请求的 .Net Framework Data Provider。可能没有安装
    Couchbase的web管理员后台 查看缓存提示警告 Warning: Editing of document with size more than 2.5kb is not allowed的解决方法
    转:asmx迷10分钟升级成wcf熟手指南
    .net4.0下 解决asp.net中“从客户端中检测到有潜在危险的Request.Form值”的错误
    Windows系统下Memcached缓存系列二:CouchbaseClient(c#客户端)的详细试用,单例模式
  • 原文地址:https://www.cnblogs.com/huhx/p/10192853.html
Copyright © 2020-2023  润新知