日日操夜夜添-日日操影院-日日草夜夜操-日日干干-精品一区二区三区波多野结衣-精品一区二区三区高清免费不卡

公告:魔扣目錄網(wǎng)為廣大站長提供免費(fèi)收錄網(wǎng)站服務(wù),提交前請做好本站友鏈:【 網(wǎng)站目錄:http://www.ylptlb.cn 】, 免友鏈快審服務(wù)(50元/站),

點(diǎn)擊這里在線咨詢客服
新站提交
  • 網(wǎng)站:51998
  • 待審:31
  • 小程序:12
  • 文章:1030137
  • 會員:747

前言

lamda表達(dá)式只支持函數(shù)式接口。

  • Lambda 表達(dá)式是 JDK8 的一個(gè)新特性,可以取代大部分的匿名內(nèi)部類,寫出更優(yōu)雅的 JAVA 代碼,尤其在集合的遍歷和其他集合操作中,可以極大地優(yōu)化代碼結(jié)構(gòu)。
  • 為啥要突然插播一個(gè)lamda表達(dá)式的學(xué)習(xí),因?yàn)檫@玩意很有逼格呀~代碼寫起來更有大佬的感覺。

一、函數(shù)式接口

什么是函數(shù)式接口?

任何一個(gè)接口,有且只有 一個(gè)抽象方法,那么它就是函數(shù)式接口。

典型的函數(shù)式接口


public interface mainInterface {
    void funMethod();
}

對于函數(shù)式接口,我們可以用lamda表達(dá)式來創(chuàng)建他的實(shí)現(xiàn)對象。

二、接口的五種實(shí)現(xiàn)方式

①正常類實(shí)現(xiàn)

代碼案例:

/**
 * 1.正常接口實(shí)現(xiàn)類
 */
class FunInterImpl implements FunInter{
    //重寫該方法
    @Override
    public void method(String name) {
        System.out.println("我是實(shí)現(xiàn)類中的重寫方法:"+name);
    }
}

②靜態(tài)內(nèi)部類實(shí)現(xiàn)

//2、靜態(tài)內(nèi)部類實(shí)現(xiàn)
    static class FunInterImpl implements FunInter{
        @Override
        public void method(String name) {
            System.out.println("我是實(shí)現(xiàn)類中的重寫方法:"+name);
        }
    }

③局部內(nèi)部類實(shí)現(xiàn)

//3.局部內(nèi)部類
        class FunInterImpl2 implements FunInter{
            @Override
            public void method(String name) {
                System.out.println("我是實(shí)現(xiàn)類中的重寫方法:"+name);
            }
        }

④匿名內(nèi)部類實(shí)現(xiàn)

//4.匿名內(nèi)部類,要一分號;結(jié)尾
        FunInter funInter2 = new FunInter() {
            @Override
            public void method(String name) {
                System.out.println("我是實(shí)現(xiàn)類中的重寫方法:"+name);
            }
        };

⑤lamda表達(dá)式實(shí)現(xiàn)

//5.lamda表達(dá)式實(shí)現(xiàn)
        FunInter funInter3 = (String name) ->{
            System.out.println("我是實(shí)現(xiàn)類中的重寫方法:"+name);
        };

整體代碼:

public class NoReturnMultiParam {
    public static void main(String[] args) {
        //1.正常實(shí)現(xiàn)接口的方式
        FunInterImpl funInter = new FunInterImpl();
        funInter.method("1、實(shí)現(xiàn)類");
        System.out.println("***************************************");
        //2、靜態(tài)內(nèi)部類實(shí)現(xiàn)
        FunInterImpl funInter1 = new FunInterImpl();
        funInter.method("2、靜態(tài)內(nèi)部類");
        System.out.println("***************************************");
        //3.局部內(nèi)部類
        class FunInterImpl2 implements FunInter{
            @Override
            public void method(String name) {
                System.out.println("我是實(shí)現(xiàn)類中的重寫方法:"+name);
            }
        }
        FunInterImpl2 funInterImpl2 = new FunInterImpl2();
        funInterImpl2.method("3、局部內(nèi)部類");
        System.out.println("***************************************");
        //4.匿名內(nèi)部類,要一分號;結(jié)尾
        FunInter funInter2 = new FunInter() {
            @Override
            public void method(String name) {
                System.out.println("我是實(shí)現(xiàn)類中的重寫方法:"+name);
            }
        };
        funInter2.method("4、匿名內(nèi)部類");
        System.out.println("***************************************");
        //5.lamda表達(dá)式實(shí)現(xiàn)
        FunInter funInter3 = (String name) ->{
            System.out.println("我是實(shí)現(xiàn)類中的重寫方法:"+name);
        };
        funInter3.method("5.lamda表達(dá)式實(shí)現(xiàn)");
    }

    //2、靜態(tài)內(nèi)部類實(shí)現(xiàn)
    static class FunInterImpl implements FunInter{
        @Override
        public void method(String name) {
            System.out.println("我是實(shí)現(xiàn)類中的重寫方法:"+name);
        }
    }
}

/**
 * 這個(gè)注解是用來標(biāo)注函數(shù)式接口的
 * 1.必須注解在接口上
 * 2.被注解的接口有且只有一個(gè)抽象方法
 * 3.被注解的接口可以有默認(rèn)方法/靜態(tài)方法,或者重寫Object的方法
 */
@FunctionalInterface
interface FunInter{
    void method(String name);
}

/**
 * 1.正常接口實(shí)現(xiàn)類
 */
class FunInterImpl implements FunInter{

    //重寫該方法
    @Override
    public void method(String name) {
        System.out.println("我是實(shí)現(xiàn)類中的重寫方法:"+name);
    }
}

執(zhí)行結(jié)果如下:

如何讓你的代碼寫起來更加優(yōu)雅?Lamda表達(dá)式助你起飛

 

三、lamda表達(dá)式

實(shí)現(xiàn)方式:

public class lamdaTest01 {
    public static void main(String[] args) {

        /**
         * 多參數(shù)無返回
         */
        NoReturnMultiParam1 n1 = (int a,int b) ->{
            System.out.println("多參數(shù)無返回:"+a+b);
        };
        n1.method(1,2);

        /**
         * 無參無返回值
         */
        NoReturnNoParam n2 = ()->{
            System.out.println("無參無返回值");
        } ;
        n2.method();

        /**
         * 一個(gè)參數(shù)無返回
         */
        NoReturnOneParam n3 = (int a) -> {
            System.out.println("一個(gè)參數(shù)無返回" + a);
        };
        n3.method(11);

        /**
         * 多個(gè)參數(shù)有返回值
         */
        ReturnMultiParam n4 = (int a,int b)->{
            System.out.println("多個(gè)參數(shù)有返回值" + a);
            return 1;
        };
        System.out.print("****"+n4.method(1, 3));

        /**
         * 無參有返回
         */
         ReturnNoParam n5 = ()->{
             System.out.println("無參有返回");
             return 1;
         };
        System.out.print("***"+n5.method());

        /**
         * 一個(gè)參數(shù)有返回值
         */
        ReturnOneParam n6 = (int a) ->{
            System.out.println("一個(gè)參數(shù)有返回值"+a);
            return a;
        };
        System.out.print("***"+n6.method(1));
    }
}

/**多參數(shù)無返回*/
@FunctionalInterface
interface NoReturnMultiParam1 {
    void method(int a, int b);
}

/**無參無返回值*/
@FunctionalInterface
interface NoReturnNoParam {
    void method();
}

/**一個(gè)參數(shù)無返回*/
@FunctionalInterface
interface NoReturnOneParam {
    void method(int a);
}

/**多個(gè)參數(shù)有返回值*/
@FunctionalInterface
interface ReturnMultiParam {
    int method(int a, int b);
}

/*** 無參有返回*/
@FunctionalInterface
interface ReturnNoParam {
    int method();
}

/**一個(gè)參數(shù)有返回值*/
@FunctionalInterface
interface ReturnOneParam {
    int method(int a);
}

執(zhí)行結(jié)果如下:

如何讓你的代碼寫起來更加優(yōu)雅?Lamda表達(dá)式助你起飛

 

四、lamda表達(dá)式的簡化:

簡化的方式

		 //1.簡化參數(shù)類型,可以不寫參數(shù)類型,但是必須所有參數(shù)都不寫
        NoReturnMultiParam1 lamdba1 = (a, b) -> {
            System.out.println("簡化參數(shù)類型");
        };
        lamdba1.method(1, 2);

        //2.簡化參數(shù)小括號,如果只有一個(gè)參數(shù)則可以省略參數(shù)小括號
        NoReturnOneParam lambda2 = a -> {
            System.out.println("簡化參數(shù)小括號");
        };
        lambda2.method(1);

        //3.簡化方法體大括號,如果方法條只有一條語句,則可以勝率方法體大括號
        NoReturnNoParam lambda3 = () -> System.out.println("簡化方法體大括號");
        lambda3.method();

        //4.如果方法體只有一條語句,并且是 return 語句,則可以省略方法體大括號
        ReturnOneParam lambda4 = a -> a+3;
        System.out.println(lambda4.method(5));

        ReturnMultiParam lambda5 = (a, b) -> a+b;
        System.out.println(lambda5.method(1, 1));

執(zhí)行結(jié)果如下:

如何讓你的代碼寫起來更加優(yōu)雅?Lamda表達(dá)式助你起飛

 

總結(jié)

  • 簡化參數(shù)類型,可以不寫參數(shù)類型,但是必須所有參數(shù)都不寫
  • 簡化參數(shù)小括號,如果只有一個(gè)參數(shù)則可以省略參數(shù)小括號
  • 簡化方法體大括號,如果方法條只有一條語句,則可以勝率方法體大括號
  • 如果方法體只有一條語句,并且是 return 語句,則可以省略方法體大括號

寫作不易,請點(diǎn)贊、關(guān)注、評論給博主一個(gè)鼓勵(lì)吧~

分享到:
標(biāo)簽:代碼
用戶無頭像

網(wǎng)友整理

注冊時(shí)間:

網(wǎng)站:5 個(gè)   小程序:0 個(gè)  文章:12 篇

  • 51998

    網(wǎng)站

  • 12

    小程序

  • 1030137

    文章

  • 747

    會員

趕快注冊賬號,推廣您的網(wǎng)站吧!
最新入駐小程序

數(shù)獨(dú)大挑戰(zhàn)2018-06-03

數(shù)獨(dú)一種數(shù)學(xué)游戲,玩家需要根據(jù)9

答題星2018-06-03

您可以通過答題星輕松地創(chuàng)建試卷

全階人生考試2018-06-03

各種考試題,題庫,初中,高中,大學(xué)四六

運(yùn)動步數(shù)有氧達(dá)人2018-06-03

記錄運(yùn)動步數(shù),積累氧氣值。還可偷

每日養(yǎng)生app2018-06-03

每日養(yǎng)生,天天健康

體育訓(xùn)練成績評定2018-06-03

通用課目體育訓(xùn)練成績評定