国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

Java 8 新特性之方法引用

wudengzan / 2471人閱讀

摘要:概述簡介若體中的功能,已經有方法提供了實現,可以使用方法引用可以將方法引用理解為表達式的另外一種表現形式方法引用的三種形式對象的引用實例方法名類名靜態方法名類名實例方法名注意方法引用所引用的方法的參數列表與返回值類型,需要與函數式接口中抽象

1. 概述 1.1 簡介

若 Lambda 體中的功能,已經有方法提供了實現,可以使用方法引用(可以將方法引用理解為 Lambda 表達式的另外一種表現形式)

方法引用的三種形式

對象的引用::實例方法名

類名::靜態方法名

類名::實例方法名

注意:

①方法引用所引用的方法的參數列表與返回值類型,需要與函數式接口中抽象方法的參數列表和返回值類型保持一致!

②若 Lambda 的參數列表的第一個參數,是實例方法的調用者,第二個參數(或無參)是實例方法的參數時,格式: ClassName::MethodName

2. 方法引用 2.2 對象的引用::實例方法名
public class Employee implements Serializable {

    private int id;
    private String name;
    private int age;
    private double salary;

    public Employee() {
    }

    public Employee(String name) {
        this.name = name;
    }

    public Employee(String name, int age) {
        this.name = name;
        this.age = age;
    }

    public Employee(int id, String name, int age, double salary) {
        this.id = id;
        this.name = name;
        this.age = age;
        this.salary = salary;
    }
    
    // 省略 getter 和 setter 方法
}
@Test
public void t1() {
    // lambda 表達式方式
    PrintStream printStreamLamBda = System.out;
    Consumer consumerLambda = (x) -> printStreamLamBda.println(x);
    consumerLambda.accept("hello lambda");

    // 方法引用方式
    PrintStream printStream = System.out;
    // 使用方法引用前提是 Consumer 的 accept 方法的參數列表和返回值必須與 println 方法的參數列表和返回值一致(參考注意①)
    Consumer con = printStream::println;
    con.accept("hello method!");
}

@Test
public void t2(){
    Employee emp = new Employee(100,"ling",18,10000);

    // lambda 表達式方式
    Supplier supplierLambda = () -> emp.getName();
    System.out.println(supplierLambda.get());

    // 方法引用方式
    Supplier supplier = emp::getName;
    System.out.println(supplier.get());
}
2.3 類名::靜態方法名
@Test
public void t3(){
    BiFunction fun = (x, y) -> Math.max(x, y);
    System.out.println("Lambda : " + fun.apply(1.5, 22.2));

    System.out.println("------------------------------------");

    BiFunction fun2 = Math::max;
    System.out.println("方法引用 : " + fun2.apply(1.2, 1.5));
}
2.4 類名::實例方法名

Employee 中添加方法

public String show() {
    return "測試方法引用!";
}

測試方法

@Test
public void test5(){
    BiPredicate bp = (x, y) -> x.equals(y);
    System.out.println(bp.test("ling", "ling"));

    System.out.println("------------------------------------");

    BiPredicate bp2 = String::equals;
    System.out.println(bp2.test("ling", "ling"));

    System.out.println("------------------------------------");


    Function fun = (e) -> e.show();
    System.out.println(fun.apply(new Employee()));

    System.out.println("------------------------------------");

    Function fun2 = Employee::show;
    System.out.println(fun2.apply(new Employee()));
}
3. 構造器引用 3.1 簡介

使用構造器引用來創建對象

注:被調用的構造器的參數列表,需要與函數式接口中參數列表保持一致!

構造器引用的語法格式

類名::new

3.2 實例
@Test
public void t5(){
    // Lambda 方式調用無參構造器
    Supplier sup = () -> new Employee();
    System.out.println(sup.get());

    System.out.println("------------------------------------");

    // 構造器引用方式調用無參構造器
    Supplier sup2 = Employee::new;
    System.out.println(sup2.get());

    // 調用一個參數構造器
    Function fun = Employee::new;

    // 調用兩個個參數構造器
    BiFunction fun2 = Employee::new;
}
4. 數組引用 4.1 簡介

用于創建數組

語法格式

類型[]::new;

4.2 實例
@Test
public void t6() {
    // Lambda 方式
    Function funLambda = (args) -> new String[args];
    String[] strsLambda = funLambda.apply(50);
    System.out.println("Lambda : " + strsLambda.length);

    System.out.println("------------------------------------");

    // 數組引用方式
    Function func = String[]::new;
    String[] strArr = func.apply(100);
    System.out.println("arr  : " + strArr.length);
}
本文首發于凌風博客:Java 8 新特性之方法引用
作者:凌風

文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。

轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/72756.html

相關文章

  • Java核心技術教程整理,長期更

    以下是Java技術棧微信公眾號發布的關于 Java 的技術干貨,從以下幾個方面匯總。 Java 基礎篇 Java 集合篇 Java 多線程篇 Java JVM篇 Java 進階篇 Java 新特性篇 Java 工具篇 Java 書籍篇 Java基礎篇 8張圖帶你輕松溫習 Java 知識 Java父類強制轉換子類原則 一張圖搞清楚 Java 異常機制 通用唯一標識碼UUID的介紹及使用 字符串...

    Anchorer 評論0 收藏0
  • Java8 lambda 表達式、方法引用、函數式接口、默認方式、靜態方法

    摘要:歐陽思海繼承接口后,又加了新的抽象方法,這個接口就不再是函數式接口默認方法在接口中添加了一個默認方法。總結在這篇文章中,我們講了表達式方法引用函數式接口接口中的靜態方法接口中的默認方法的使用。 今天我來聊聊 Java8 的一些新的特性,確實 Java8 的新特性的出現,給開發者帶來了非常大的便利,可能剛剛開始的時候會有點不習慣的這種寫法,但是,當你真正的熟悉了之后,你一定會愛上這些新的...

    isLishude 評論0 收藏0
  • 樂字節Java8核心特性實戰方法引用

    摘要:大家好,我是樂字節的小樂,上一次我們說到了核心特性之函數式接口,接下來我們繼續了解又一核心特性方法引用。方法引用是一種更簡潔易懂的表達式。感謝光臨閱讀小樂的,敬請關注樂字節后續將繼續講述等前沿知識技術。 大家好,我是樂字節的小樂,上一次我們說到了Java8核心特性之函數式接口,接下來我們繼續了解Java8又一核心特性——方法引用。 showImg(https://segmentfaul...

    lakeside 評論0 收藏0
  • 樂字節-Java8特性方法引用

    摘要:上一篇小樂介紹了新特性函數式接口,大家可以點擊回顧。中引入方法引用新特性用于簡化應用對象方法的調用,方法引用是用來直接訪問類或者實例的已經存在的方法或者構造方法。方法引用是一種更簡潔易懂的表達式。 上一篇小樂介紹了《Java8新特性-函數式接口》,大家可以點擊回顧。這篇文章將接著介紹Java8新特性之方法引用。 Java8 中引入方法引用新特性,用于簡化應用對象方法的調用,?方法引用是...

    Codeing_ls 評論0 收藏0
  • Java 8方法引用和Lambda表達式

    摘要:方法引用在之前只能進行值傳遞,方法是不能傳遞的。首先方法接受了一個類型的對象,方法是獲取所有的文件,是用來存儲篩選之后的元素,循環所有獲得到的文件數組,然后調用中的方法來進行條件篩選,放入后返回。 方法引用: 在Java 8之前只能進行值傳遞,方法是不能傳遞的。如果你想調用一個方法你必須先獲取到它所在的類的實例,然后再通過實例去調用這個方法,但是Java 8新增了方法引用這個新特性可以...

    legendmohe 評論0 收藏0

發表評論

0條評論

wudengzan

|高級講師

TA的文章

閱讀更多
最新活動
閱讀需要支付1元查看
<