溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Java中::符號的作用是什么

發(fā)布時間:2021-07-26 17:58:55 來源:億速云 閱讀:1224 作者:chen 欄目:編程語言

本篇內容主要講解“Java中::符號的作用是什么”,感興趣的朋友不妨來看看。本文介紹的方法操作簡單快捷,實用性強。下面就讓小編來帶大家學習“Java中::符號的作用是什么”吧!

1. 前言

Java中的方法引用,很多同學都見過但卻叫不出名字,在這篇文章中,我們將看到什么是方法引用以及如何使用它。

2. 方法引用的使用場景

我們先來看看方法引用的使用:

new Random().ints(10)         .map(i->Math.abs(i))         .forEach(i -> System.out.println(i));

這里我們隨機生成10個整數然后取它們絕對值并一一打印出來。寫法是沒有問題的,但是還是可以再簡化的。

map方法接受的是一個函數式接口IntUnaryOperator,那么上面代碼中的i->Math.abs(i)實際上是:

new IntUnaryOperator() {     @Override     public int applyAsInt(int operand) {         return Math.abs(operand);     } }

從上面來看IntUnaryOperator就是代理了Math.abs(int i),參數列表、返回值都相同,而且沒有摻雜其它額外的邏輯。這一點非常重要,不摻雜其它邏輯才能相互代替。那么就可以通過方法引用來簡化Lambda 表達式。上面的式子就可以簡化為:

new Random().ints(10)          .map(Math::abs)          .forEach(System.out::println);

3. 方法引用

Java 方法引用Java 8隨著Lambda表達式引入的新特性。 可以直接引用已有Java類或對象的方法或構造器。方法引用通常與Lambda表達式結合使用以簡化代碼。其使用條件是:Lambda表達式的主體僅包含一個表達式,且Lambda表達式只調用了一個已經存在的方法;被引用的方法的參數列表和返回值與Lambda表達式的輸入輸出一致。

Java中::符號的作用是什么

Java中::符號的作用是什么

3.1 格式

方法引用的格式為<ClassName | instance>::<MethodName>。也就是被引用的方法所屬的類名和方法名用雙冒號::隔開,構造器方法是個例外,引用會用到new關鍵字,總結了一下:

引用方式說明靜態(tài)方法引用ClassName :: staticMethodName 例如上面的Math::abs構造器引用ClassName :: new 例如通過Supplier<T> 返回新實例類任意實例方法引用ClassName :: instanceMethodName 例如 String::concat類特定實例方法引用instance:: instanceMethodName 例如 this::equals

4. 關于可讀性問題

大部分人認為Lambda 表達式存在閱讀困難的問題,其實不然,這種流水線的結構恰恰增加了可讀性,每一個Lambda 表達式都可以看作一個執(zhí)行策略,方法引用反而讓你能更加清楚執(zhí)行了什么策略。另外我經常見到類似如下的流式寫法: 

new Random().ints(10)          .map(operand -> {              System.out.println("operand = " + operand);              return operand+1;          })         .forEach(System.out::println);

這種"大肚子"寫法的風格是不建議在函數式編程中出現(xiàn)的。最好單獨提出來封裝做方法引用,寫成下面的風格: 

public void randomInt() {      new Random().ints(10)              .map(this::selfIncreasing)              .forEach(System.out::println);   }  // 封裝  private int selfIncreasing(int self){      System.out.println("self = " + self);      return self+1;  }

這樣反而可讀性很強,隨機取10個數,然后每個數走個自增并分別打印出來。

5. 總結

方法引用實現(xiàn)在特定場景下Lambda表達式的簡化表示,目的在于讓代碼更加簡潔。但是習慣了傳統(tǒng)Java編程風格的同學上來會不太適應,希望借助于本文能幫助你解決這個問題。 

到此,相信大家對“Java中::符號的作用是什么”有了更深的了解,不妨來實際操作一番吧!這里是億速云網站,更多相關內容可以進入相關頻道進行查詢,關注我們,繼續(xù)學習!

向AI問一下細節(jié)

免責聲明:本站發(fā)布的內容(圖片、視頻和文字)以原創(chuàng)、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI