Lambda表达式

Lambda表达式指的是应用在单一抽象方法(SAM)接口环境下的一种简化定义形式,可以用于解决匿名内部类的定义复杂问题。
Lambda表达式的语法:

(参数)->方法体

相当于子类覆写抽象方法的方法体

例:Lambda表达式入门操作

package Project.Study.Lambda_test;interface IMessage{public void print();
}
public class Test1 {public static void main(String [] args){//此处为Lambda表达式,没有任何输入参数,只是进行输出操作fun(()->System.out.println("Hello World"));}public static void fun(IMessage msg){msg.print();}
}
//结果:
//Hello World

例:使用匿名内部类进行上述操作

package Project.Study.Lambda_test;interface IMessage{public void print();
}
public class Test1 {public static void main(String [] args){fun(new IMessage() {    //等价于Lambda表达式定义@Overridepublic void print() {System.out.println("Hello World");}});}public static void fun(IMessage msg){msg.print();}
}
//结果:
//Hello World

为了分辨出Lambda表达式的使用接口,可以在接口上使用“@FunctionalInterface”注解声明,这样就表示此为函数式接口,里面只允许定义一个抽象方法。
例:函数式接口

@FunctionalInterface
interface IMessage{public void print();
}

例:定义有参数有返回值的方法

package Project.Study.Lambda_test;interface IMessage{public int add(int x,int y);
}
public class Test1 {public static void main(String [] args){fun((s1,s2)->{return s1-s2;});}public static void fun(IMessage msg){System.out.println(msg.add(10,20));}
}
//结果:
//-10

例:传递可变参数

package Project.Study.Lambda_test;
@FunctionalInterface
interface IMessage2{public int add(int...args);static int sum(int...args){  //此方法可以由接口名称直接调用int sum=0;for(int temp:args){sum+=temp;}return sum;}
}
public class Test2 {public static void main(String [] args){//在Lambda表达式中则直接调用接口里定义的静态方法fun2((int...param)->IMessage2.sum(param));}public static void fun2(IMessage2 msg){System.out.println(msg.add(10,20,30)); //传递可变参数}
}

Java学习总结:24相关推荐

  1. Java学习笔记24(Map集合)

    Map接口: Map接口与Collection接口无继承关系. 区别:Collection中的元素是孤立的,一个一个存进去的. Map作为一个映射集合,每一个元素包含Key-value对(键-值对). ...

  2. JAVA学习笔记24——SpringBoot

    SpringBoot 微服务架构 把每个功能元素独立出来,把独立出来的功能元素动态组合,需要的功能元素才去拿来组合,需要多一些时可以聚合多个功能元素,所以微服务架构是对功能元素进行复制,而没有对整个应 ...

  3. Java学习笔记24

    在前面大致讲解了Collection这个根接口的知识,让我们知道Collection接口是List.Set和Queue接口的父接口,该接 口里定义的方法既可用于操作Set集合,也可用于操作List和Q ...

  4. java学习(24):if..else...if

    /任务3:if- else if-. else if-.else语句 编写控制台java程序,模拟根据有多少钱买车的功能. 使用Scanner对象相关方法从控制台接收用户输入有多少钱, 单位为万.如果 ...

  5. Java必备:java入门、java学习

    2019独角兽企业重金招聘Python工程师标准>>> 版权声明:本文为北京尚学堂原创文章,未经允许不得转载. 1.Java入门 1-1.Java具有那些适合在Internet环境中 ...

  6. Java学习笔记(十)--控制台输入输出

    输入输出 一.控制台输入 在程序运行中要获取用户的输入数据来控制程序,我们要使用到 java.util 包中的 Scanner 类.当然 Java 中还可以使用其他的输入方式,但这里主要讲解 Scan ...

  7. Java入门1.2.3—一个老鸟的Java学习心得

    Java入门1.2.3-一个老鸟的Java学习心得 基本信息 作者: 臧萌    出版社:清华大学出版社 ISBN:9787302217831 上架时间:2010-3-30 出版日期:2010 年3月 ...

  8. super构造方法为什么给子类赋值_【Java学习 | Javase】super

    整理自:动力节点基础讲义 super 概述 严格来说,super其实并不是一个引用,它只是一个关键字,super代表了当前对象中从父类继承过来的那部分特征.换句话说,super其实是this的一部分, ...

  9. java周志第二周_第二周JAVA学习日志

    从这周老师讲的东西中,我了解了许多以前不懂得东西.这周老师布置的作业,对我来说真的有点困难.通过上课的学习和下来翻书,勉强完成了一个登录界面的制作.这周学习的事件处理和swing组建以及swing组建 ...

  10. java学习中,字符串使用(比较、构造方法)(java 学习中的小记录)

    java学习中,字符串使用(比较.构造方法)(java 学习中的小记录)作者:王可利(Star·星星) String的使用 1.在内存中是如何保存字符串. == :比较的是地址(引用数据类型) equ ...

最新文章

  1. 遥感在计算机领域的应用,遥感技术在测绘工作中的应用分析
  2. [Elixir008]Nested Module里的动态函数调用方式
  3. 困难是成功路上的垫脚石_Java是开发的垫脚石。 学习吧!
  4. 前端学习(176):列表元素
  5. 一位面试了阿里,滴滴,网易,蚂蚁金服,最终有幸去了网易的Java程序员【面试题分享】...
  6. 5.7和5.6的mysql_mysql5.6与5.7版本的区别
  7. js调用后台,后台调用前台等方法总结
  8. Cesium 环境配置笔记(使用node.js 或者WampServer服务器)
  9. c++修复工具_别再花钱修复旧照片啦!老照片一键修复工具,独创方法支持PS2020...
  10. MySQL如何使用.sql后缀的文件
  11. 苹果手机怎么查看已连接wifi密码_手机连不上wifi显示已保存怎么回事【原因介绍】...
  12. 手机塔防游戏-手机塔防游戏收入、毛利率、市场规模及市场份额
  13. 计算机走进画图世界课件,windowsxp走进画图世界教案
  14. skynet master/slave 模式
  15. 自学微信二次开发(1)
  16. HTML标签、认识浏览器
  17. R语言ggplot2可视化:使用ggpubr包的ggdensity函数可视化密度图、使用scale_x_continuous函数指定X轴坐标轴的取值范围(起始值和终止值)
  18. 手机App开发的基础概念
  19. 最简单的方式讲明白numpy.reshape()函数
  20. 波恩大学癫痫脑电和波士顿儿童医院脑电信号数据集下载

热门文章

  1. blender动画全面学习教程
  2. 关于ceph源码 backtrace 打印函数调用栈
  3. 贪心:Wiggle Subsequence 摇摆序列
  4. ceph nautilus相对于minic的主要改动
  5. P1066 2^k进制数 NOIP 2006 提高组 第四题
  6. 1042. 托普利兹矩阵
  7. python Django 学习笔记
  8. asp.net提交危险字符处理方法之一
  9. 关于大型网站技术演进的思考(五)--存储的瓶颈(5)
  10. 异步调用WCF的方法需要小心的地方