Java8特性之方法引用

createh51周前 (03-28)技术教程3
  • 方法引用简介

如果在Lambda表达式的具体逻辑处理和某个方法的处理逻辑相同,则可以直接将方法名称指代具体的处理逻辑,从而使得整个Lambda表达式更加的简洁,逻辑更加清晰。

比如: System.out.println

Arrays.asList(1,2,3)

.forEach(

(a) -> System.out.println(a)

);

Arrays.asList(1,2,3)

.forEach(

System.out :: println

);

通过 System.out 的实例方法名来代替整个处理逻辑

  • 方法引用分类

静态方法引用

格式:Class :: static Method

实例方法引用

格式:instance :: method

构造器方法引用

格式:Class :: new

对象方法引用

格式:instance :: method(args)

  • 方法引用示例

静态方法引用:

Bash
Arrays.asList(1,5,3,2,10,8)
     .sort(
     Integer :: compare
    );

通过调用Integer 类的静态比较方法,实现对于List的排序

实例方法引用:

Bash
 Arrays.asList(1,2,3)
      .forEach(
       System.out :: println
 );

System.out 是PrintStream的实例,而println 是PrintStream的方法。

构造器方法引用:

Bash
Supplier 
          supplier = MethodRef :: new;

Supplier 是一个函数式接口,代表对象结果的提供者角色,内部提供了get()方法,返回具体的对象。

对象方法引用:

Bash
BiPredicate
     bp =
       (a, b) -> a.equals(b);

BiPredicate 
       bp1 = 
         String :: equals;

注意:对象方法引用的第一个参数是方法的调用者,第二个参数是方法的参数。

相关文章

如何理解java基础中的Reference和引用类型?

首先要大致了解 Java 的几种引用类型。如下图所示,JDK 1.2 之后新增了 Reference 的概念,给开发人员提供了与 GC 交互的一种渠道。《深入理解 Java 虚拟机》中对于几种引用类型...

java的四种引用

java 中的引用分为 4种1.强引用 引用存在就不会被GC *2.软引用 heap memory(堆内存)满了就会被GC掉 *3.弱引用 每次GC就会回收掉(应用有:ThreadLocal) *4....

详细介绍一下Java中的什么是值传递?什么是引用传递?

Java中的参数传递是通过值传递进行的,即使是对象也是遵循这个规则,想要了解这个原理,首先我们就需要了解什么是值传递,什么是引用传递?值传递值传递是在调用方法的时候,方法接收到的参数是实际参数的一个副...

Java 值传递详解

开始之前,我们先来搞懂下面这两个概念:形参&实参值传递&引用传递形参&实参方法的定义可能会用到 参数(有参的方法),参数在程序语言中分为:实参(实际参数,Arguments):用于传递给函数/方法的参...

Java开发者必知的15个核心概念,第8个让你恍然大悟!

你是不是经常在面试中被问到Java的基础概念,却总是回答得不够全面?别担心,今天我们就来聊聊Java开发中那些必须掌握的核心知识点,帮你轻松应对各种技术面试! 1. ClassLoader:Java类...