Lamda表达式

函数式编程的产生(匿名内部类)

  1. interface Mes{
  2. public void speak();
  3. }
  4. public class Lam {
  5. public static void main(String[] args) {
  6. fun(new Mes(){//匿名内部类
  7. public void speak(){//覆写方法
  8. System.out.println("hello!");
  9. }
  10. });
  11. }
  12. public static void fun(Mes m){//传递接口类型参数
  13. m.speak();
  14. }
  15. }

  

【2】
匿名内部类
Book接口

  1. interface Book{
  2. public static final double price=21.8;
  3. public static final String title="诗词";
  4. public void show(double price,String title);
  5. }
  6. public class Lam {
  7. public static void main(String[] args) {
  8. fun(new Book(){//匿名内部类
  9. public void show(double price,String title){//覆写方法
  10. System.out.println(price+" "+title);
  11. }
  12. });
  13. }
  14. public static void fun(Book b){//传递接口类型参数
  15. b.show(34.6,"歌曲");
  16. }
  17. }

  

研究Lamda必须先熟悉匿名内部类

嵌套太多的原因
JDK1.8引入
【3】

格式
fun((参数类型 参数)->执行语句);

  1. interface Book{
  2. public static final double price=21.8;
  3. public static final String title="诗词";
  4. public void show(double price,String title);
  5. }
  6. public class Lam {
  7. public static void main(String[] args) {
  8. // fun(new Book(){//匿名内部类
  9. // public void show(double price,String title){//覆写方法
  10. // System.out.println(price+" "+title);
  11. // }
  12. // });
  13. fun((double price,String title)->System.out.println(price+" "+title));
  14. }
  15. public static void fun(Book b){//传递接口类型参数
  16. b.show(34.6,"歌曲");
  17. }
  18. }

  

【4】

Lamda三种形式
(参数)->单行语句
(参数)->{语句;}
(参数)->表示式

  1. interface Book{
  2. public static final double price=21.8;
  3. public static final String title="诗词";
  4. public void show(double price,String title);
  5. }
  6. public class Lam {
  7. public static void main(String[] args) {
  8. //Lamda (参数)->{语句;}
  9. fun((double price,String title)->{
  10. System.out.println("书的价格:"+price);
  11. System.out.println("书的名字:"+title);
  12. });
  13. }
  14. public static void fun(Book b){//传递接口类型参数
  15. b.show(34.6,"歌曲");
  16. }
  17. }

  

【5】

  1. interface Book{
  2. public static final double price=21.8;
  3. public static final String title="诗词";
  4. public String show(double price,String title);
  5. }
  6. public class Lam {
  7. public static void main(String[] args) {
  8. //Lamda (参数)->表示式
  9. fun((double price,String title)->
  10. "书的价格:"+price+"书的名字:"+title
  11. );
  12. }
  13. public static void fun(Book b){//传递接口类型参数
  14. System.out.println(b.show(34.6,"歌曲"));
  15. }
  16. }

  

【7】
add(x+y)练习Lamde

  1. interface Inte{
  2. public int add(int x,int y);
  3. }
  4. public class Lam {
  5. public static void main(String[] args) {
  6. //Lamda
  7. fun(
  8. (a,b)->a+b
  9. );
  10. }
  11. public static void fun(Inte i){
  12. System.out.println(i.add(34,4));
  13. }
  14. }

  

总结:

Lamde最终解决的是 定义过多匿名内部类的问题

Lamda表达式的更多相关文章

  1. 解读ASP.NET 5 & MVC6系列(12):基于Lamda表达式的强类型Routing实现

    前面的深入理解Routing章节,我们讲到了在MVC中,除了使用默认的ASP.NET 5的路由注册方式,还可以使用基于Attribute的特性(Route和HttpXXX系列方法)来定义.本章,我们将 ...

  2. SQL、Linq、lamda表达式 同一功能不同写法

    一.SQL.Linq.lamda表达式 同一功能不同写法 SQL LINQ Lambda SELECT * FROM HumanResources.Employee from e in Employe ...

  3. [.net 面向对象程序设计进阶] (5) Lamda表达式(一) 创建委托

    [.net 面向对象程序设计进阶] (5) Lamda表达式(一)  创建委托 本节导读: 通过学习Lambda表达式,学会创建委托和表达式目录树,深入了解Lambda的特性,让你的代码变的更加清晰. ...

  4. [.net 面向对象程序设计进阶] (6) Lamda表达式(二) 表达式树快速入门

    [.net 面向对象程序设计进阶] (6) Lamda表达式(二) 表达式树快速入门 本节导读: 认识表达式树(Expression Tree),学习使用Lambda创建表达式树,解析表达式树. 学习 ...

  5. [.net 面向对象程序设计进阶] (7) Lamda表达式(三) 表达式树高级应用

    [.net 面向对象程序设计进阶] (7) Lamda表达式(三) 表达式树高级应用 本节导读:讨论了表达式树的定义和解析之后,我们知道了表达式树就是并非可执行代码,而是将表达式对象化后的数据结构.是 ...

  6. Linq和Lamda表达式的简单处理方式

    一 什么是LINQ? LINQ即Language Integrated Query(语言集成查询),LINQ是集成到C#和Visual Basic.NET这些语言中用于提供查询数据能力的一个新特性. ...

  7. python 内置函数 lamda表达式。 open 文件方法

    lamda 表达式 lambda表达式 学习条件运算时,对于简单的 if else 语句,可以使用三元运算来表示,即: 普通的条件语句 if 1 == 1: name = 'kaixin' else: ...

  8. 为了去重复,写了一个通用的比较容器类,可以用在需要比较的地方,且支持Lamda表达式

    为了去重复,写了一个通用的比较容器类,可以用在需要比较的地方,且支持Lamda表达式,代码如下: public class DataComparer<T>:IEqualityCompare ...

  9. 【python】lamda表达式,map

    一个很好的博客:http://blog.csdn.net/mathboylinlin/article/details/9413551 博客不让转载,我只摘抄了里面几个例子,更多内容到博客里去看 lam ...

随机推荐

  1. tomcat启动,输出system.out.println()

    tomcat6.0在使用System.out.println("aa")的时候,用cmd启动startup.bat,弹出的那个cmd窗口看到 还可以看logs/catalina.o ...

  2. Android涉及到的设计模式

    转载地址:http://blog.csdn.net/dengshengjin2234/article/details/8502097 1.适配器模式:ListView或GridView的Adapter ...

  3. Maximum sum(poj 2479)

    题意:给一段数列,将这个数列分成两部分,使两部分的最大子段和的和最大,输出和 /* 看数据没想到是(O)n的算法,求出从前向后的最大子段和和从后向前的最大子段和, 然后枚举断点. 第一次提交不小心折在 ...

  4. 虚析构函数(√)、纯虚析构函数(√)、虚构造函数(X)

    from:http://blog.csdn.net/fisher_jiang/article/details/2477577 一. 虚析构函数 我们知道,为了能够正确的调用对象的析构函数,一般要求具有 ...

  5. 安卓向服务器发送List数据

    第一步: 首先写一个自定义的JavaBean,以UserInfo.java为例,需要实现对象序列化的接口,因为之后输出流对象需要实现输出可序列化的对象.不这样的话,后续时发送时会报异常 package ...

  6. wait() 与 sleep

    1.对于两种方法区别 1. 这两个方法来自不同的类,sleep方法属于Thread,wait方法属于Object. 2. 最主要是sleep方法没有释放锁,而wait方法释放了锁,使得其他线程可以使用 ...

  7. grep -n 显示行号

    [root@86 ~]# grep -n "StartDiscoverers" /usr/local/zabbix/etc/zabbix_server.conf 176:### O ...

  8. Effective C++笔记:构造/析构/赋值运算

    条款05:了解C++默默编写并调用哪些函数 默认构造函数.拷贝构造函数.拷贝赋值函数.析构函数构成了一个类的脊梁,只有良好的处理这些函数的定义才能保证类的设计良好性. 当我们没有人为的定义上面的几个函 ...

  9. 【部分原创】标准C语言的优先级、结合性、求值顺序、未定义行为和非确定行为浅析

    零. 优先级    在C++ Primer一书中,对于运算符的优先级是这样描述的:     Precedence specifies how the operands are grouped. It ...

  10. HTTP基础01--web与互联网基础

    WWW构建技术: 把SGML(标准通用标记语言)作为页面文本标记的HTML(超文本标记语言): 作为文档传递协议的HTTP(超文本传输协议):  //严谨应该称为“超文本转移协议”: 指定文档所在地址 ...