栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

lambda表达式:简化代码

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

lambda表达式:简化代码

函数式接口Functional Interface是学习java8函数式编程的关键所在

简化方式丧心病狂,没学过的根本看不懂的

1、函数式接口的定义:一个任意的接口,接口中只含有一个抽象方法(),那它就是一个函数式接口。

比如:

//标准函数式接口:Runnable接口:实现此接口成为自定义线程类
public interface Runnable{
    public abstract void run ();
}

2、对于函数式接口,我们可以使用lambda表达式来创建改接口的对象

lambda小测试一,代码是怎么一步步简化的:

package com.bes.mybatis_plus.TestLambda;

public class TestLambda1 {

    //3、静态内部类
    static class  Like2 implements Ilike{
        @Override
        public void lambda() {
            System.out.println("i like lambda2 !!!");
        }
    }

    public static void main(String[] args) {
        //老方法
        Ilike like = new Like();
        like.lambda();

        like = new Like2();
        like.lambda();

        //4、局部内部类
        class Like3 implements Ilike{
            @Override
            public void lambda() {
                System.out.println("i like lambda3 !!!");
            }
        }

        like = new Like3();
        like.lambda();

        //5、匿名内部类,没有名次,必须借助接口或者父类;名字省了
        like = new Ilike() {
            @Override
            public void lambda() {
                System.out.println("i like lambda4 !!!");
            }
        };
        like.lambda();

        //6、一步步简化,简化到java8新特性:用lambda简化函数式接口实现,
        // 实现接口不写了,实现接口的方法不写了,直接写方法里要做的事就行了
        // 能省就省,代码极致简化
        like = ()->{
            System.out.println("i like lambda5 !!!");
        };

        like.lambda();
    }
}

//1、写一个函数式接口:只有一个抽象方法的接口
interface Ilike{
    void lambda();
}

//2、写一个实现类
class Like implements Ilike{
    @Override
    public void lambda() {
        System.out.println("i like lambda !!!");
    }
}

输出结果:

i like lambda !!!
i like lambda2 !!!
i like lambda3 !!!
i like lambda4 !!!
i like lambda5 !!!

lambda小测试二,当函数式接口的那个抽象方法带参数,该怎么写:

package com.bes.mybatis_plus.TestLambda;

public class TestLambda2 {

    public static void main(String[] args) {
        
        //简化,去掉实现,去掉实现的抽象方法


        //再次简化,去掉参数类型,因为接口中定义了参数类型,这里定义参数名


        //再再次简化,去掉括号,直接参数名加箭头,多个参数,参数名用括号括起来,中间用,隔开


        //如果实现体只有一行代码,还可以再再再次简化!!!,连大括号都去掉,真尼玛变态(但是现实中一般用不着,因为一般不会只有一行代码)
        //接口名 接口对象名 = 方法参数名 -> 方法实现体
//        ILove love = a-> System.out.println("I love you--> !!!" + a);

        //多个参数,方法名用括号括起来
        ILove love = (a,str,isOK)->{
            System.out.println("I love you--> !!!" + a +" " + str +" " + isOK);
        };

        

        love.love(521, "潘狗子", true);
    }
}

interface ILove{
    //单个参数测试
//    void love(int a);
    //多个参数测试
    void love(int a, String str, boolean isOK);
}

测试结果:

I love you--> !!!521
I love you--> !!!521 潘狗子 true
 

函数式接口名 接口对象 = (参数名)->{

// 抽象方法实现体

}

缺点:可读性大大降低,很多人没学过直接看不懂,学过的也要熟悉了才能快速理解代码

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/959086.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号