lambda表达式传参
Lambda表达式中使用的变量需要遵循以下规则:
1、只能引用标记了 final 的外层局部变量,这就是说不能在 lambda 内部修改定义在域外的局部变量,否则会编译错误。
2、局部变量可以不用声明为 final,但是必须不可被后面的代码修改(即隐性的具有 final 的语义)
3、不允许声明一个与局部变量同名的参数或者局部变量。
下面这段代码编译器会报错:
public static void main(String args[]){List<String> dest = new ArrayList<>();List<String> src = new ArrayList<>(Arrays.asList("01", "02", "03"));src.forEach(item -> {add(dest,item);});dest = null;}
因为违反了第二条规则(局部变量可以不用声明为 final,但是必须不可被后面的代码修改(即隐性的具有 final 的语义))
稍作修改,去掉对dest的修改,可以编译通过:
public static void main(String args[]){List<String> dest = new ArrayList<>();List<String> src = new ArrayList<>(Arrays.asList("01", "02", "03"));src.forEach(item -> {add(dest,item);});}
通过lambda表达式,向线程中传递局部变量,并且执行相关操作:
public static void main(String args[]){List<String> dest = new ArrayList<>();List<String> src = new ArrayList<>(Arrays.asList("01", "02", "03"));new Thread(()->add(dest,"a")).start();try {Thread.sleep(1000);} catch (InterruptedException e) {e.printStackTrace();}System.out.println(dest.size());}private static void add(List<String>l,String item){l.add(item);System.out.println(item);}
转载于:https://www.cnblogs.com/shuhe-nd/p/11532218.html
lambda表达式传参相关推荐
- java+lamda+传参_lambda表达式传参
Lambda表达式中使用的变量需要遵循以下规则: 1.只能引用标记了 final 的外层局部变量,这就是说不能在 lambda 内部修改定义在域外的局部变量,否则会编译错误. 2.局部变量可以不用声明 ...
- html es表达式传参,ES2015 正则表达式新增特性
正则表达式 的 ES2015 正则表达式新增特性 ES2015 正则表达式新增特性: 在原来正则表达式基础上,ES2015增强了对四字节unicode字符的支持等功能. 更多正则表达式内容可以参阅正则 ...
- Java8中Lambda表达式的10个例子
Java8中Lambda表达式的10个例子 例1 用Lambda表达式实现Runnable接口 Java代码 //Before Java 8: new Thread(new Runnable() ...
- 10个Java 8 Lambda表达式经典示例
Java 8 刚于几周前发布,日期是2014年3月18日,这次开创性的发布在Java社区引发了不少讨论,并让大家感到激动.特性之一便是随同发布的lambda表 达式,它将允许我们将行为传到函数里.在J ...
- java 拉姆表达式_Java8 lambda表达式10个示例
Java 8 lambda表达式示例 转自importNew 原文链接 例1.用lambda表达式实现Runnable 我开始使用Java 8时,首先做的就是使用lambda表达式替换匿名类,而实现R ...
- Java 8 新增lambda表达式(-)
2019独角兽企业重金招聘Python工程师标准>>> Java 8 刚于几周前发布,日期是2014年3月18日,这次开创性的发布在Java社区引发了不少讨论,并让大家感到激动.特性 ...
- 【Java学习笔记之三十一】详解Java8 lambda表达式
Java 8 发布日期是2014年3月18日,这次开创性的发布在Java社区引发了不少讨论,并让大家感到激动.特性之一便是随同发布的lambda表达式,它将允许我们将行为传到函数里.在Java 8之前 ...
- Java 8 Lambda表达式10个示例【存】
PS:不能完全参考文章的代码,请参考这个文件http://files.cnblogs.com/files/AIThink/Test01.zip 在Java 8之前,如果想将行为传入函数,仅有的选择就是 ...
- 线程,Java8,10个lambda表达式
1. 线程. 同步,异步,线程互斥, 锁. .join, sleep, wait.. 三种创建模式 Thread class 继承 Thread 类 Runnable接口 实现 Runnable接口 ...
- Java Lambda表达式入门 1
转载请标明出处:http://blog.csdn.net/xx326664162/article/details/53930569 文章出自:薛瑄博客 我对Java 8发布非常激动,尤其是lambda ...
最新文章
- bert-as-service使用
- 淘宝网7年变化图--建议非美工UED人员也看看
- 测试一下能够图文混排
- java短_Java中的最短代码和最低延迟
- centos7 firewall指定IP与端口访问(常用)
- Linux CentOS 5.5 服务器安装图文教程
- 【渝粤教育】 国家开放大学2020年春季 1039高级财务会计 参考试题
- python 如何定义n个变量 (变量声明自动化)
- (二)线程--通过委托异步调用方法
- RabbitMq学习笔记003---RabbitMQ处理类型分类
- android 从网络加载图片并显示
- 【汇编语言】程序格式
- 设备独立的操作系统软件
- 2016.2注册破解方法
- ContentProvider 之 监听共享数据变化
- CAN负载率为什么不能太高?
- 离散数学——图论中图的同构的应用
- 失恋CPR 自救手册
- 中海国亚Java笔试题
- 在 markdown 中使用表情符号
热门文章
- 实习成长之路:MySQL二 : 一条SQL更新语句是如何执行的?
- 算法案例之有效字母异位词
- 基于 Flink+Iceberg 构建企业级实时数据湖
- Android Studio如何Debug对应so文件C/C++代码
- java 配置dbcp_java – 使用DBCP进行Tomcat配置
- cdh用户权限_CDH6.3.2之Sentry权限管理(三)
- 帆软高级函数应用之数(学)值函数
- java 字符串排序_Java控制台输入字符串及字符串比较
- python截取某一段文字分栏_Python文本数据互相转换(pandas and win32com)
- python 多分类 recall_sklearn多分类问题