这里面简单的讲一下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 = ;
int innerResult = operateValue(value, new Function<Integer, Integer>() {
@Override
public Integer apply(Integer t) {
return + t;
}
});
System.out.println(innerResult); // int lambdaResult = operateValue(value, t -> t + );
System.out.println(lambdaResult); // int andThenResult = operateValue(value, val -> val + , val -> val + );
System.out.println(andThenResult); //
}
}

二、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(, x -> x >= )); // 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
}
}

友情链接

最新文章

  1. 苹果强制使用HTTPS传输了怎么办?——关于HTTPS,APP开发者必须知道的事
  2. JavaScript基础知识总结(二)
  3. Google Play Store —与google服务器通信时出现问题
  4. ECSHOP MYSQL 公用类库中的autoExecute方法
  5. MVC中的JS和CSS压缩
  6. investopedia level 2
  7. 转发 eclipse 取消javascript 验证
  8. define 实例
  9. Linux下安装MySQL数据库以及用C语言编程存取数据库
  10. Media层
  11. DDD理论学习系列(9)-- 领域事件
  12. Swift 3.0在集合类数据结构上的一些新变化
  13. pig简单的代码实例:报表统计行业中的点击和曝光量
  14. js或jquery实现点击某个按钮或元素显示div,点击页面其他任何地方隐藏div
  15. maven生成项目慢解决办法
  16. 如何引入iconfont图标与Element-UI组件
  17. 从xampp到phpmyadmin
  18. 第73节:Java中的HTTPServletReauest和HTTPServletResponse
  19. Centos Linux 下Pycharm 安装
  20. Javascript高级编程学习笔记(7)—— 函数

热门文章

  1. kvm部署
  2. WordPress主题开发:footer.php
  3. IDEA下Maven的Offline Mode
  4. Go语言字典树定义及实现
  5. SSH + Google Authenticator 安全加固
  6. InfluxDB服务器启动流程
  7. window下zookeeper的下载启动和报错等问题
  8. webstorm快捷键 webstorm keymap内置快捷键英文翻译、中英对照说明
  9. 单片机成长之路(51基础篇) - 012 MCS-51单片机控制详解–TMOD T2MOD
  10. Linux服务器CPU使用率较低但负载较高