方法引用

方法引用可以看作仅仅调用特定方法方法的 lambda 的一种快捷的方式。

显示的指定方法的名称,可读性会更好

代码示例

  [java]
1
2
3
4
5
6
7
8
9
10
11
12
/** * 方法引用 */ @Test public void functionRefTest() { Apple one = new Apple(20); Apple two = new Apple(10); List<Apple> appleList = Arrays.asList(one, two); appleList.sort((a1, a2)->a1.getWeight().compareTo(a2.getWeight())); appleList.sort(Comparator.comparing(Apple::getWeight)); }

图示

构造函数的方法引用

  • 无参数
  [java]
1
2
3
4
5
6
7
8
9
10
11
12
/** * 构造函数的引用 */ @Test public void constructorRefTest() { Supplier<Apple> appleSupplier = Apple::new; Apple one = appleSupplier.get(); //is the same as Supplier<Apple> appleSupplier2 = ()->new Apple(); Apple two = appleSupplier2.get(); }
  • 有参数
  [java]
1
2
3
4
5
6
7
8
/** * 有参构造函数 */ @Test public void constructorWithParamTest() { Function<Integer, Apple> appleFunction = Apple::new; Apple apple = appleFunction.apply(100); }