工具技巧和读文档 | 读函数式编程接口文档 | 匿名内部类 | lambda表达式 |IDEA

Function接口,函数式接口
按入参返回值分类,大概分为4种类型,再加上多个入参就又多了Bi开头的两种。
有Ctrl+P的时候不懂参数列表该写啥,就先Ctrl+ALT看下入参类型的相关实现类!
一些实用的快捷键:Ctrl + P看参数列表,Ctrl + Q 看接口文档
一些单词:匿名的 anonymous; 二进制的:binary
书籍推荐:java8函数式编程

文章目录

    • 你是否很好奇函数式编程的传参到底要怎么传,接收返回值到底要用什么类型接收???
      • Stream流最常见的应用场景
      • java函数式接口印象
      • 看到一个陌生的参数列表要怎么传参
      • 匿名内部类和Lambda表达式的转化
      • Function接口的入参和返回值
      • demo
      • 其他有意义的问题

你是否很好奇函数式编程的传参到底要怎么传,接收返回值到底要用什么类型接收???

Stream流最常见的应用场景

在这里插入图片描述

java函数式接口印象

  • 消费型 Consumer (有入参,无返回值)
  • 提供者型 Supplier (无入参,有返回值)
  • 常见型 Function(有入参,有返回值)

上述类型的入参都是单个入参的。像BiConsumer, BiFunction这种的入参是多个入参
Bi 可以 理解为 binary,二进制的,两个的
工具技巧和读文档 | 读函数式编程接口文档 | 匿名内部类 | lambda表达式 |IDEA_第1张图片

看到一个陌生的参数列表要怎么传参

查看入参的实现类
(当时Ctrl+P查看接口的参数列表时,看到BinaryOperator是入参实在不知道要传啥参数。后来查Ctrl+alt看了BinaryOperator的实现类,才发现它可以传BIgDecimal::sum这种。其实在reduce方法处按下Ctrl+Q是可以查看jdk的接口文档的,里面有详细的使用案例)
工具技巧和读文档 | 读函数式编程接口文档 | 匿名内部类 | lambda表达式 |IDEA_第2张图片

匿名内部类和Lambda表达式的转化

工具技巧和读文档 | 读函数式编程接口文档 | 匿名内部类 | lambda表达式 |IDEA_第3张图片在这里插入图片描述利用IDE实现转换:
鼠标停在->附近按下alt+enter可以看到idea的提示,可以快捷地实现lambda表达式到匿名内部类写法的互转
工具技巧和读文档 | 读函数式编程接口文档 | 匿名内部类 | lambda表达式 |IDEA_第4张图片
工具技巧和读文档 | 读函数式编程接口文档 | 匿名内部类 | lambda表达式 |IDEA_第5张图片

Function接口的入参和返回值

工具技巧和读文档 | 读函数式编程接口文档 | 匿名内部类 | lambda表达式 |IDEA_第6张图片

demo


// Lambda表达式写法1
Stream<String> stringStream = list.stream().map(CallaboratorParamsInfo::getMerchantCode);

// Lambda表达式写法2
Stream<String> stringStream = list.stream().map(callaboratorParamsInfo -> callaboratorParamsInfo.getMerchantCode());

// 匿名内部类写法
Stream<String> stringStream = list.stream().map(new Function<CallaboratorParamsInfo, String>() {
		@Override
		public String apply(CallaboratorParamsInfo callaboratorParamsInfo) {
			return callaboratorParamsInfo.getMerchantCode();
		}
	});


其他有意义的问题

  • default方法
  • 如何自定义一个函数式接口
  • stream的并行流使用

你可能感兴趣的:(随机探索,工具和使用技巧,intellij-idea,java,ide)