为什么可以使用类引用使lambda引用实例方法?

时间:2015-06-12 17:00:42

标签: java lambda

String[] foo = {"one","two", "three"};
Arrays.sort(foo, (a,b) -> a.compareTo(b));

并且

String[] foo = {"one","two", "three"};
Arrays.sort(foo, String::compareTo);

是等价的。

compareTo是实例方法时,为什么我可以通过String引用compareTo

1 个答案:

答案 0 :(得分:4)

想想这个例子

Function<String, String> func;  

func = string -> string.toUpperCase();

func = String::toUpperCase;

将实例方法视为带有额外this参数的静态方法,以便推导出方法参考。

    static String toUpperCase(String this)