Java的方法引用有一个不太理解

乐山ing 发布于 2017/04/10 16:01
阅读 123
收藏 0

 

Comparator<String> naturalOrder = String::compareTo;

Comparator的compareTo方法签名是int compare(T o1, T o2);接受两个参数

而String的compareTo方法签名是public int compareTo(String anotherString),接受一个参数

那么为什么上面那段代码可以通过呢?

 

加载中
0
如比如比
如比如比
第一阶段:
        Comparator<String> naturalOrder1 = new Comparator<String>() {
            public int compare(String x, String y) {
              return x.compareTo(y);
            }
          };
第二阶段:
      Comparator<String> naturalOrder2 = (String x, String y) -> x.compareTo(y);
第三阶段:
      Comparator<String> naturalOrder3 = String::compareTo;

这是对lambda理解程度的抽象。参照:http://www.cnblogs.com/figure9/p/java-8-lambdas-insideout-language-features.html

如比如比
如比如比
回复 @乐山ing : 方法引用,通过方法名称引用已有方法,注意是已有方法,参数在接口已经很明确了。。
乐山ing
乐山ing
看了一下,还是不太了解.能否详细解释?针对这个例子
返回顶部
顶部