当我们遇到下面情况时:

SingleObj.getInstance().setRunnable(new Runnable() {@Overridepublic void run() {}
});

编译器总是会提出警告,可以使用拉姆达表达式替换:

SingleObj.getInstance().setRunnable(() -> {});

这样一个匿名类就被拉姆达表达式替换了,实现和效果上大致没什么区别,用拉姆达表达式后语句更加简短了。但深究拉姆达表达式,实际有很大区别,主要有以下两点:

1. this使用

假设外部类为A.class

使用匿名类时:

SingleObj.getInstance().setRunnable(new Runnable() {@Overridepublic void run() {A a = A.this;}
});

使用拉姆达表达式后:

SingleObj.getInstance().setRunnable(() -> {A a = this;
});

2. 外部类的持有:

使用匿名类时,匿名类会持有外部类的引用:

但使用拉姆达表达式后,将会不持有外部类的引用:

总结:使用拉姆达表达式不仅可以简化代码,而且将不会持有外部类的引用,这样就可以避免因匿名类对象得到释放而造成的内存泄露问题。

java1.8 Lambda拉姆达表达式深入探究相关推荐

  1. 关于常用的Lambda(拉姆达)表达式

    ISO C++ 11 标准的一大亮点是引入Lambda表达式.基本语法如下: [capture list] (parameter list) ->return type { function b ...

  2. 拉姆达表达式(Lambda Expressions)

    让我们先看一个简单的拉姆达表达式: x=>x/2 这个表达式的意思是:x为参数,对x进行相应的操作后的结果作为返回值. 通过这个拉姆达表达式,我们可以看到: 这个表达式没有任何类型信息,但这并不 ...

  3. C#拉姆达(=)表达式

    前言: 之前小猪曾经分享过自己对C#委托的一点理解 其实在使用委托的过程中我们会大量的使用拉姆达(=>)表达式 介绍: "Lambda表达式"是一个匿名函数,是一种高效的类似 ...

  4. 拉姆达表达式 追加 条件判断 ExpressionFuncT, bool

    拉姆达表达式 追加 条件判断 Expression<Func<T, bool>> 2014/11/13 14:47:59  虫虫飞520   程序员俱乐部   我要评论(0) ...

  5. 拉姆达表达式相关知识

    拉姆达表达式 拉姆达表达式是创建匿名函数的另一种方法.因此,拉姆达表达式可以赋值给委托.虽然主要在操作LINQ中使用拉姆达表        达式,但是这种表达式也适用于委托和事件. 拉姆达表达式运算符 ...

  6. 一句话学会拉姆达表达式(JAVA)

    LambdaExpress 一 . 理论 1.1 是什么 ​ Lambda 表达式(lambda expression)是一个匿名函数,Lambda表达式基于数学中的λ演算得名,直接对应于其中的lam ...

  7. SqlSugar常用查询实例-拉姆达表达式

    SqlSugar支持拉姆达表达式查询,匿名对象参数等,相对还是比较方便好用的. 一.查询列表: //查询列表SqlSugarClient db = SugarContext.GetInstance() ...

  8. C# 匿名方法和拉姆达表达式

    "` "`代码如下: using System; using System.Collections.Generic; using System.Linq; using System ...

  9. 匿名函数 和 拉姆达表达式

    匿名函数 匿名方法是创建与特定委托实例相关联的未命名代码块的一种方法.可以通过在代码块后面跟上delegate关键字来创建匿名方法. delegate void print();delegate st ...

最新文章

  1. linux C实现mkdir功能
  2. Kubernetes 与 OpenYurt 无缝转换(命令式)
  3. _Linux安装软件方法总结
  4. 七种主流设计风格_您是哪种设计风格?
  5. linux环境变量命名规范,Linux就该这么学 -- 重要的环境变量
  6. 使用继电器制作振荡器
  7. 上传本地新项目到SVN服务器
  8. Unity移动---朝向并移动到鼠标点击位置
  9. 数组的趣味应用-文曲星猜数游戏
  10. 域名服务商自曝行业内幕:用户面临层层陷阱
  11. 2021辽宁省大学生程序设计竞赛 题解
  12. Go操作Memcached
  13. 基于51单片机的水温水流量检测/智能水龙头控制系统proteus仿真原理图PCB
  14. unity 使用socket制作局域网项目--激流勇进
  15. 电机参数与脉冲当量的计算方法
  16. 初学者如何阅读源码?
  17. JS基础-字符串拆分、截取、查找汇总
  18. 都说外包毁简历,说说我的经历:外包两年跳进外企和大厂!简历污点不是外包经历,是技术太差!...
  19. 最近很多笔试的基础题,小汇总下
  20. 最新QT从入门到实战完整版(07 对象树)

热门文章

  1. 目标跟踪:Deepsort--卡尔曼滤波、匈牙利匹配、马氏距离、欧氏距离、级联匹配、reid
  2. 电影和电视Movies and TV
  3. 考心理健康教育教师资格证-初出茅庐
  4. python: del函数
  5. 腾讯云服务器怎么搭建多个ip,(技巧)利用腾讯云架设多ip实现单窗口单ip
  6. 天池比赛notebook
  7. unity3D多点测量、多边形面积测量
  8. 基于NT98530的多目VR摄像机方案,多sensor同步,多sensor防抖,PTP校时,实景SLAM数字孪生的最佳搭档。
  9. 7 类与对象,方法和函数的定义和使用,返回值,权限修饰符 public default protected private(重点)
  10. HTML+CSS 仿写京东网站界面