最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

java8新特性之方法引用示例代碼

 更新時(shí)間:2020年11月13日 10:51:59   作者:格雷弗斯  
這篇文章主要給大家介紹了關(guān)于java8新特性之方法引用的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧

簡(jiǎn)介

方法引用是java8的新特性之一, 可以直接引用已有Java類或?qū)ο蟮姆椒ɑ驑?gòu)造器。方法引用與lambda表達(dá)式結(jié)合使用,可以進(jìn)一步簡(jiǎn)化代碼。

方法引用的使用場(chǎng)景

我們用Lambda表達(dá)式來(lái)實(shí)現(xiàn)匿名方法。但有些情況下,我們用Lambda表達(dá)式僅僅是調(diào)用一些已經(jīng)存在的方法,除了調(diào)用動(dòng)作外,沒(méi)有其他任何多余的動(dòng)作,在這種情況下,我們傾向于通過(guò)方法名來(lái)調(diào)用它,而Lambda表達(dá)式可以幫助我們實(shí)現(xiàn)這一要求,它使得Lambda在調(diào)用那些已經(jīng)擁有方法名的方法的代碼更簡(jiǎn)潔、更容易理解。方法引用可以理解為L(zhǎng)ambda表達(dá)式的另外一種表現(xiàn)形式。

方法引用的分類

類型 語(yǔ)法 對(duì)應(yīng)的Lambda表達(dá)式
靜態(tài)方法引用 類名::staticMethod (args) -> 類名.staticMethod(args)
實(shí)例方法引用 inst::instMethod (args) -> inst.instMethod(args)
對(duì)象方法引用 類名::instMethod (inst,args) -> 類名.instMethod(args)
構(gòu)建方法引用 類名::new (args) -> new 類名(args)

示例代碼:

import lombok.AllArgsConstructor;
import lombok.Data;

/**
 * create gl 
 **/
@Data
@AllArgsConstructor
public class User {
 private String name;
 private Integer age;
 private String sex;
 private Status status;

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

 public User(String name, Integer age, String sex) {
  this.name = name;
  this.age = age;
  this.sex = sex;
 }

 public enum Status{
  FREE,
  BUSY,
  VOCATION;
 }

}

import com.gl.java8test.User;

import java.util.Comparator;
import java.util.function.BiPredicate;
import java.util.function.Consumer;
import java.util.function.Function;
import java.util.function.Supplier;

/**
 * create gl 
 *
 * 一。方法引用:若lambda 體中的內(nèi)容 有方法已經(jīng)實(shí)現(xiàn),我們可以使用”方法引用“
 *
 * 主要有三種語(yǔ)法格式
 *
 * 1. 對(duì)象 :: 實(shí)例方法名
 * 2. 類 :: 靜態(tài)方法名
 * 3. 類 :: 實(shí)例方法名
 *
 * 注意:方法體中的參數(shù)與返回類型 必須與該函數(shù)接口中的參數(shù)返回類型保持一致
 *   第一個(gè)參數(shù)是實(shí)例的調(diào)用者,第二個(gè)參數(shù)是實(shí)例方法的參數(shù)時(shí),可以這樣寫 ClassName::method
 *
 *
 * 二。 構(gòu)造器引用
 *  格式: ClassName::new
 *
 * 三. 數(shù)組引用
 *  格式: Type[]::new
 **/
public class Test03 {

 //對(duì)象 :: 實(shí)例方法名
 public static void test1(){
  Consumer<String> consumer = System.out::println;
  consumer.accept("631235");
  System.out.println("----------------------------");
  User user=new User();
  Supplier<String> stringSupplier = user::getName;
  stringSupplier.get();
 }

 //類 :: 靜態(tài)方法名
 public static void test2(){
  Comparator<Integer> comparator = Integer::compare;
 }

 //類 :: 實(shí)例方法名
 public static void test3(){
  BiPredicate biP = (x,y) -> x.equals(y);
  // 下面這樣寫必須是 : 第一個(gè)參數(shù)是實(shí)例的調(diào)用者,第二個(gè)參數(shù)是實(shí)例方法的參數(shù)時(shí),可以這樣寫 ClassName::method
  BiPredicate<String,String> biPredicate=String::equals;
 }

 //構(gòu)造器引用 構(gòu)造器的參數(shù)與返回類型 必須與該函數(shù)接口中的參數(shù)返回類型保持一致
 public static void test4(){
//  Supplier<User> userSupplier = () -> new User();
  Supplier<User> userSupplier=User::new;
  User user = userSupplier.get();


  System.out.println("----------------------------");
  Function<String,User> function = User::new;
  User user1 = function.apply("sfsdf");
  System.out.println(user1);
 }

 //數(shù)組引用
 public static void test5(){
//  Function<Integer,String[]> function = x -> new String[x];
  Function<Integer,String[]> function = String[]::new;
 }

 public static void main(String[] args) {
//  test1();
  test4();
 }
}
import com.gl.java8test.User;

import java.util.Comparator;
import java.util.function.BiPredicate;
import java.util.function.Consumer;
import java.util.function.Function;
import java.util.function.Supplier;

/**
 * create gl 
 *
 * 一。方法引用:若lambda 體中的內(nèi)容 有方法已經(jīng)實(shí)現(xiàn),我們可以使用”方法引用“
 *
 * 主要有三種語(yǔ)法格式
 *
 * 1. 對(duì)象 :: 實(shí)例方法名
 * 2. 類 :: 靜態(tài)方法名
 * 3. 類 :: 實(shí)例方法名
 *
 * 注意:方法體中的參數(shù)與返回類型 必須與該函數(shù)接口中的參數(shù)返回類型保持一致
 *   第一個(gè)參數(shù)是實(shí)例的調(diào)用者,第二個(gè)參數(shù)是實(shí)例方法的參數(shù)時(shí),可以這樣寫 ClassName::method
 *
 *
 * 二。 構(gòu)造器引用
 *  格式: ClassName::new
 *
 * 三. 數(shù)組引用
 *  格式: Type[]::new
 **/
public class Test03 {

 //對(duì)象 :: 實(shí)例方法名
 public static void test1(){
  Consumer<String> consumer = System.out::println;
  consumer.accept("631235");
  System.out.println("----------------------------");
  User user=new User();
  Supplier<String> stringSupplier = user::getName;
  stringSupplier.get();
 }

 //類 :: 靜態(tài)方法名
 public static void test2(){
  Comparator<Integer> comparator = Integer::compare;
 }

 //類 :: 實(shí)例方法名
 public static void test3(){
  BiPredicate biP = (x,y) -> x.equals(y);
  // 下面這樣寫必須是 : 第一個(gè)參數(shù)是實(shí)例的調(diào)用者,第二個(gè)參數(shù)是實(shí)例方法的參數(shù)時(shí),可以這樣寫 ClassName::method
  BiPredicate<String,String> biPredicate=String::equals;
 }

 //構(gòu)造器引用 構(gòu)造器的參數(shù)與返回類型 必須與該函數(shù)接口中的參數(shù)返回類型保持一致
 public static void test4(){
//  Supplier<User> userSupplier = () -> new User();
  Supplier<User> userSupplier=User::new;
  User user = userSupplier.get();


  System.out.println("----------------------------");
  Function<String,User> function = User::new;
  User user1 = function.apply("sfsdf");
  System.out.println(user1);
 }

 //數(shù)組引用
 public static void test5(){
//  Function<Integer,String[]> function = x -> new String[x];
  Function<Integer,String[]> function = String[]::new;
 }

 public static void main(String[] args) {
//  test1();
  test4();
 }
}

總結(jié)

到此這篇關(guān)于java8新特性之方法引用的文章就介紹到這了,更多相關(guān)java8新特性方法引用內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Java排序算法之歸并排序簡(jiǎn)單實(shí)現(xiàn)

    Java排序算法之歸并排序簡(jiǎn)單實(shí)現(xiàn)

    這篇文章主要介紹了Java排序算法之歸并排序簡(jiǎn)單實(shí)現(xiàn),具有一定借鑒價(jià)值,需要的朋友可以參考下。
    2017-12-12
  • SpringBoot Tomcat啟動(dòng)實(shí)例代碼詳解

    SpringBoot Tomcat啟動(dòng)實(shí)例代碼詳解

    這篇文章主要介紹了SpringBoot Tomcat啟動(dòng)實(shí)例代碼詳解,需要的朋友可以參考下
    2017-09-09
  • Spring Bean的屬性注入方式

    Spring Bean的屬性注入方式

    這篇文章主要介紹了Spring Bean的屬性注入方式的相關(guān)資料,需要的朋友可以參考下
    2018-02-02
  • JAVA調(diào)用JavaScript方法舉例詳解

    JAVA調(diào)用JavaScript方法舉例詳解

    之前在一次機(jī)緣巧合的情況下,需要時(shí)用JAVA執(zhí)行js方法,查閱了一些文檔,找到了相關(guān)解決方法,這里和大家分享一下,下面這篇文章主要給大家介紹了關(guān)于JAVA調(diào)用JavaScript方法的相關(guān)資料,需要的朋友可以參考下
    2023-10-10
  • MyBatis-Plus通用CRUD操作的實(shí)現(xiàn)

    MyBatis-Plus通用CRUD操作的實(shí)現(xiàn)

    MyBatis-Plus是基于MyBatis的增強(qiáng)工具,主要目的是簡(jiǎn)化MyBatis的使用并提升開(kāi)發(fā)效率,它提供了通可以用CRUD操作、分頁(yè)插件、多種插件支持、自動(dòng)代碼生成器等功能,感興趣的可以了解一下
    2024-10-10
  • java8中forkjoin和optional框架使用

    java8中forkjoin和optional框架使用

    這篇文章主要介紹了java8中forkjoin和optional框架使用心得以及用法講解,需要的朋友參考下吧。
    2017-12-12
  • Java IO創(chuàng)建目錄和文件實(shí)例代碼

    Java IO創(chuàng)建目錄和文件實(shí)例代碼

    本篇文章給大家分享了Java IO創(chuàng)建目錄和文件的實(shí)例代碼,過(guò)程很簡(jiǎn)單,大家可以測(cè)試參考下。
    2018-02-02
  • 簡(jiǎn)述Java中throw-throws異常拋出

    簡(jiǎn)述Java中throw-throws異常拋出

    任何Java代碼都可以拋出異常,本文主要介紹了Java中throw-throws異常拋出,具有一定的參考價(jià)值,感興趣的可以了解一下
    2021-08-08
  • 基于Jmeter生成測(cè)試報(bào)告過(guò)程圖解

    基于Jmeter生成測(cè)試報(bào)告過(guò)程圖解

    這篇文章主要介紹了基于Jmeter生成測(cè)試報(bào)告過(guò)程圖解,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-08-08
  • Mybatis-Plus中update()和updateById()將字段更新為null

    Mybatis-Plus中update()和updateById()將字段更新為null

    本文主要介紹了Mybatis-Plus中update()和updateById()將字段更新為null,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2022-08-08

最新評(píng)論

濉溪县| 济南市| 嘉祥县| 库车县| 武安市| 青田县| 黑河市| 凤台县| 岳阳市| 南丰县| 上高县| 司法| 西青区| 伽师县| 马龙县| 青川县| 上饶县| 乌拉特中旗| 中超| 娄烦县| 镇安县| 柳江县| 江西省| 财经| 平武县| 林西县| 会同县| 兰坪| 永新县| 故城县| 洱源县| 莲花县| 楚雄市| 五大连池市| 元氏县| 石台县| 泾阳县| 衢州市| 洛阳市| 东兴市| 镇远县|