zoukankan      html  css  js  c++  java
  • lambda表达式,及lambda简化过程

    lambda表达式(jdk8特性)

    1.为什么要用lambda表达式

    原因:因为我们有时候需要用到很多类,但是,这些类我们只用一次或者两次,所以我们用匿名内部类,但是匿名内部类多了还是很麻烦,所以用lambda表达式再次简化这种简单类

    让代码更加简洁,避免很多无意义的语句

    函数式接口的定义?

    lambda表达式使用的前提?

    实现一个接口,接口只有一个方法。

    lambda的简化顺序 :外部类->静态内部类->局部内部类->匿名内部类->lambda

    interface Person{
        void say();
    }
    class Student1 implements Person{//第一个,一个外部的类,比较麻烦,代码也简单
        @Override
        public void say() {
            System.out.println("学生1说了一句话");
        }
    }
    public class LambdaTest {
        static class Student2 implements Person{//第2个,静态内部类
            @Override
            public void say() {
                System.out.println("学生2说了一句话");
            }
        }
        public static void main(String[] args) {
            Person s1 = new Student1();
            s1.say();
            Person s2 = new Student2();
            s2.say();
            class Student3 implements Person{//第3个,局部内部类
                @Override
                public void say() {
                    System.out.println("学生3说了一句话");
                }
            }
            Person s3 = new Student3();
            s3.say();
            Person s4 = new Person() {//匿名内部类,没有类的名称,必须借助接口或者父类
                @Override
                public void say() {
                    System.out.println("学生4说了一句话");
                }
            };
            s4.say();
            Person s5 = ()->{//lambda方法
                System.out.println("学生5说了一句话");
            };
            s5.say();
        }
    }
    
    

    lambda格式:怎么样简化成极限?一句?怎么简化?

    (参数列表)->{//参数列表可以继续省掉类型声明,一个形参可以省略括号,方法体只有一句可以省略{}
    	方法体
    }
    Pet pet1 = (String food)-> {
                System.out.println(food);
    };
    Pet pet2 = (food)-> {//两个参数的时候不能省略()
        System.out.println(food);
    };
    Pet pet3 = food-> {
        System.out.println(food);//方法体多句话的时候不能省略这句话
    };
    Pet pet4 = food->System.out.println(food);
    

    Runnable接口,就一个run()方法,可以配合lambda

  • 相关阅读:
    面向接口程序设计思想实践
    Block Chain Learning Notes
    ECMAScript 6.0
    Etcd Learning Notes
    Travis CI Build Continuous Integration
    Markdown Learning Notes
    SPRING MICROSERVICES IN ACTION
    Java Interview Questions Summary
    Node.js Learning Notes
    Apache Thrift Learning Notes
  • 原文地址:https://www.cnblogs.com/li33/p/12715226.html
Copyright © 2011-2022 走看看