【爱上Java8】Java8函数式方法的方法引用
来源:互联网 发布:h5免费制作网站 知乎 编辑:程序博客网 时间:2024/05/18 03:53
Java8里新引入的函数式编程,在不少场合确实可以减少不少代码行数,书写和阅读还是比较方便的。值得提倡。
但是有些地方看起来可能不像以前那么好懂了,比如下面的代码,对字符串进行排序。其中sort的方法签名是:
1
public static <T> void sort(T[] a, Comparator<? super T> c)
但是,实际用的时候,可以传入一个方法引用,String::compareToIgnoreCase,但是这个写法,语法是正确的。
从传统Java的角度看,是无论如何也想不通的,因为Comparator和String::compareToIgnoreCase的签名是不一样的。
但在这里,传入的是一个方法引用,并不是Comparator接口 ,实际上下面的写法等同于:
1
2
3
2
3
String[] stringArray = { "Barbara", "James", "Mary", "John",
"Patricia", "Robert", "Michael", "Linda" };
Arrays.sort(stringArray, String::compareToIgnoreCase);
"Patricia", "Robert", "Michael", "Linda" };
Arrays.sort(stringArray, String::compareToIgnoreCase);
等同于下面,如果按照下面的写法,就一目了然了吧,实际上是生成了一个匿名方法,这个匿名方法用compareToIgnoreCase来实现,
上面的写法只是省略了参数a,b 而已。个人感觉为了看起来方便,还不如写成下面的样子。不然有些时候,真不好懂呀。
1
2
3
2
3
String[] stringArray = { "Barbara", "James", "Mary", "John",
"Patricia", "Robert", "Michael", "Linda" };
Arrays.sort(stringArray, (a,b)->a.compareToIgnoreCase(b));
"Patricia", "Robert", "Michael", "Linda" };
Arrays.sort(stringArray, (a,b)->a.compareToIgnoreCase(b));
0 0
- 【爱上Java8】Java8函数式方法的方法引用
- Java8 的方法引用
- java8 方法或构造函数的引用
- Java8方法引用(::)
- java8之方法引用
- Java8---5.方法引用
- Java8之方法引用
- java8 方法引用
- Java8 _ 方法引用 ::
- java8中的方法引用
- java8-静态方法引用
- Java8 MethodReference方法引用
- java8之方法引用
- Java8之方法引用
- Java8 lambda表达式、函数式接口、方法引用
- Java8学习笔记(二)-函数式接口与方法引用
- Java8 Lambda表达式 函数式编程 方法引用
- Java8函数式编程之五:方法引用详解
- Leetcode练习- Unique Binary Search Tree
- VC调试
- linux守护进程编程
- POJ-3109-Inner Vertices
- StringBuffer
- 【爱上Java8】Java8函数式方法的方法引用
- hdu1548BFS
- 基于统计语言模型的拼音输入法
- 利用正则表达式处理字符
- Trie树(字典树)poj3630+hdu1671
- 做个JAVA 8的调查?
- poj 3261 Milk Patterns
- C++模板
- windows环境下音频文件播放