-
当要传递给
lambda
体的操作,已经有实现的方法了,可以使用方法引用 -
方法引用可以看做是
Lambda
表达式深层次的表达。换句话说,方法引用就是lambda
表达式,也就是函数式接口的一个实例,通过方法的名字来指向一个方法,可以认为是Lambda
表达式的一个语法糖 -
实现接口的抽象方法的参数列表和返回值类型,必须与方法引用的方法的参数列表和返回值类型保持一致
-
使用操作符
::
将类(或对象 )与方法名分隔 -
主要使用情况
- 对象
::
实例方法名
@Test public void test1() { Consumer<String> consumer = str -> System.out.println(str); consumer.accept("chengdu"); // 方法引用 Consumer<String> consumer1 = System.out::println; consumer1.accept("chengdu"); }
-
类
::
静态方法名@Test public void test2() { // 通过类调用静态方法 // List<Person> personList1 = Person.getPersonList(); // 方法引用 Supplier<List<Person>> supplier = Person::getPersonList; List<Person> personList = supplier.get(); System.out.println(personList.size()); }
-
类
::
实例方法名@Test public void test3() { List<Person> personList = Person.getPersonList(); for (Person person : personList) { // 方法引用 Supplier<String> supplier = person::getName; System.out.println(supplier.get()); } } @Test public void test4() { // lambda 表达式 Comparator<Integer> comparator = (t1, t2) -> Integer.compare(t1, t2); int result = comparator.compare(1, 2); System.out.println(result); // 方法引用 Comparator<Integer> comparator1 = Integer::compare; int result1 = comparator1.compare(2, 1); System.out.println(result1); }
- 对象
Java方法引用
最新推荐文章于 2023-09-14 15:41:30 发布