Java函数式编程(基础):第一部分

Java函数式编程(基础):第一部分1.函数式编程有三个部分:第一个部分是:Lambda表达式第二个部分是:方法引用第三个部分是:函数式接口刚接触Lambda表达式的我,觉得它很神奇,能够用简短的代码,代替传统的编程方式举一个简单的栗子:我们要实现一个接口中的方法:第一种方式是:先定义一个类实现接口,重写其方法,然后实例化这个类的对象,调用这个方法;第二种方式是:通过内部类的方式实现现在就到Lambda闪亮登场了:先定义一个静态的方法,形参是那个接口,然后在静态方法中调…

大家好,欢迎来到IT知识分享网。

1.函数式编程有三个部分:

第一个部分是:Lambda表达式

第二个部分是:方法引用

第三个部分是:函数式接口

刚接触Lambda表达式的我,觉得它很神奇,能够用简短的代码,代替传统的编程方式

举一个简单的栗子:

我们要实现一个接口中的方法:第一种方式是:先定义一个类实现接口,重写其方法,然后实例化这个类的对象,调用这个方法;

Java函数式编程(基础):第一部分

Java函数式编程(基础):第一部分 

Java函数式编程(基础):第一部分 

第二种方式是:通过内部类的方式实现

Java函数式编程(基础):第一部分 

现在就到Lambda闪亮登场了:

Java函数式编程(基础):第一部分 

 先定义一个静态的方法,形参是那个接口,然后在静态方法中调用接口的方法

Java函数式编程(基础):第一部分

Lambda表达式的使用前提是:要有一个接口,接口中有且仅有一个方法

如果Lambda中只有一条执行语句的时候,可以将{}和;省略

 Java函数式编程(基础):第一部分

 

代码内容:

public interface Eatable {

    void eat();
}

public class Eattest implements Eatable{

    @Override
    public void eat() {

        System.out.println(“我很喜欢吃烤鸡”);
        
    }

public class Test2 {

    public static void main(String[] args) {

        //通过实例化类,多态来实现
        Eatable e=new Eattest();
        eatdemo(e);
        
        //通过内部类实现
        eatdemo(new Eatable() {

            
            @Override
            public void eat() {

                System.out.println(“我喜欢吃炸鸡”);
            }
        });
        
        //通过Lambda实现
        eatdemo(() ->{

            System.out.println(“我好喜欢吃炸鸡”);
        });
        //等同于
        eatdemo(()->System.out.println(“我好喜欢吃炸鸡”));
    }
    
    private static void eatdemo(Eatable e) {

        e.eat();
    }
}

Lambda的第二部分:书写的省略

1.1可以省略参数类型 比如:

        flytest((String s) ->{

            System.out.println(s);
        });
        //可以省略参数类型
        flytest((s) ->{

            System.out.println(s);
        });

1.2如果要省略参数类型,必须所有的参数类型都省略

比如:        

addtest((x,int y) ->{

            return x+y;
        });

 

这种写法是错误的,会报错的

Java函数式编程(基础):第一部分

必须都省略:addtest((x,y) ->{

            return x+y;
        });

2.1如果只有一个参数的时候,可以省略()

    flytest(s->{

            System.out.println(s);
        });

2.2如果代码块的语句只有一条,可以省略{}和;

flytest(s->System.out.println(s));

3.如果代码块的语句只有一条,可以省略{}和;如果有return,可以将其省去

addtest((x,y) ->x+y);

代码演示:

//加法接口

public interface Add {

    int add(int x,int y);
}

//行为动作接口

public interface Flyable {

    void fly(String s);
}

在main方法中实现

public class Show {

    public static void main(String[] args) {

        flytest((String s) ->{

            System.out.println(s);
        });
        //可以省略参数类型
        flytest((s) ->{

            System.out.println(s);
        });
        
        //如果要省略参数类型,必须所有的参数类型都省略
//        错误的
//        addtest((x,int y) ->{

//            return x+y;
//        });
        
        //如果只有一个参数的时候,可以省略()
        flytest(s->{

            System.out.println(s);
        });
        
        //如果代码块的语句只有一条,可以省略{}和;
        flytest(s->System.out.println(s));
        
        //如果代码块的语句只有一条,可以省略{}和;如果有return,可以将其省去
        addtest((x,y) ->x+y);
        
    }
    
    private static void flytest(Flyable f) {

        f.fly(“那种小鸟在天上飞!”);
    }
    private static void addtest(Add a) {

        int sum=a.add(50, 100);
        System.out.println(sum);
    }
}

谢谢你的观看!

免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。 本文来自网络,若有侵权,请联系删除,如若转载,请注明出处:https://yundeesoft.com/21981.html

(0)
上一篇 2024-01-13 07:33
下一篇 2024-01-13 10:00

相关推荐

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注

关注微信