Lambda语法

1.前提条件是一个接口,且接口中必须只能有一个方法

配置类

public interface Father {
    public abstract Integer zhagongsi(String str );
}

测试方法

    //原始写法
    Father father = new Father() {
        @Override
        public Integer zhagongsi(String str) {
            return Integer.parseInt(str);
        }
    };

因为匿名类的类型、方法名、方法返回类型、方法权限修饰符 都知道,所以我们可以省去类的结构变成如下结构

    Father father =
        (String str) -> {
            return Integer.parseInt(str);
        };

又因为如果只有一个参数的话,方法参数的括号都可以不用,以及方法参数的类型

    Father father =
         str -> {
            return Integer.parseInt(str);
        };

如果接口中实现的方法代码只有一行的话,方法结构也可以去掉,因为只有一行方法返回类型也知道,retrun关键字也可以去掉

Father father = str ->  Integer.parseInt(str);

因为该参数也是方法体中一个方法(普通方法)的参数,也可以简写成

Father f =  Integer::parseInt;

测试方法

    Father f1 = new Father() {
        @Override
        public Integer zhagongsi(String str) {
            return new Integer(str);
        }
    };

该参数也是方法体中一个方法(构造方法)的参数,也可以简写成

Father f2 = Integer::new;

总结:

1.Lambda语法优势是写法简单,但是不便于阅读
2.简写的宗旨是弱化了类的结构,减少类文件编写,更关注于逻辑编写(接口方法传入什么参数,如何使用,最后给什么出参)

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 在讲解Lambda语法之前我们需要先明确一点:Lambda表达式需要函数式接口的支持。什么是函数式接口?其实就是接...
    马斯克瑞德阅读 432评论 0 0
  • 前言 在JDK8之前,Java是不支持函数式编程的,所谓的函数编程,即可理解是将一个函数(也称为“行为”)作为一个...
    袁小胜阅读 957评论 0 0
  • 基础语法 无参数的情况 :val/var 变量名 = { 操作的代码 }有参数的情况val/var 变量名 : (...
    Boyko阅读 384评论 0 0
  • 提到Lambda表达式,也许你听过Lambda演算。其实这是这是两个不同的概念,Lambda演算和图灵机一样,是一...
    AndYMJ阅读 523评论 0 0
  • 1、语法定义。 函数的参数 函数-> 函数体 只有一个参数时,括号可以省略 函数体只有一个语句时,括号可以省略如果...
    Java小工匠阅读 600评论 1 2