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

  • 相关阅读:
    【题解】[HEOI2016/TJOI2016]字符串
    【题解】CF1037H Security
    Centos 7开机自启动oracle
    WRH$_ACTIVE_SESSION_HISTORY打补丁14084247实现自动分区
    oracle设置awr采集间隔和保留时间
    dgbroker配置Fast-Start Failover
    dgbroker删除后切换为手工管理
    删除dgbroker
    现有dgbroker管理的dg下添加一台从库且互相切换
    linux-unzip-error
  • 原文地址:https://www.cnblogs.com/li33/p/12715226.html
Copyright © 2011-2022 走看看