Lamda表达式
Lamda表达式
函数式编程的产生(匿名内部类)
interface Mes{
public void speak();
}
public class Lam {
public static void main(String[] args) {
fun(new Mes(){//匿名内部类
public void speak(){//覆写方法
System.out.println("hello!");
}
});
}
public static void fun(Mes m){//传递接口类型参数
m.speak();
}
}
【2】
匿名内部类
Book接口
interface Book{
public static final double price=21.8;
public static final String title="诗词";
public void show(double price,String title);
}
public class Lam {
public static void main(String[] args) {
fun(new Book(){//匿名内部类
public void show(double price,String title){//覆写方法
System.out.println(price+" "+title);
}
});
}
public static void fun(Book b){//传递接口类型参数
b.show(34.6,"歌曲");
}
}
研究Lamda必须先熟悉匿名内部类
嵌套太多的原因
JDK1.8引入
【3】
格式
fun((参数类型 参数)->执行语句);
interface Book{
public static final double price=21.8;
public static final String title="诗词";
public void show(double price,String title);
}
public class Lam {
public static void main(String[] args) {
// fun(new Book(){//匿名内部类
// public void show(double price,String title){//覆写方法
// System.out.println(price+" "+title);
// }
// });
fun((double price,String title)->System.out.println(price+" "+title));
}
public static void fun(Book b){//传递接口类型参数
b.show(34.6,"歌曲");
}
}
【4】
Lamda三种形式
(参数)->单行语句
(参数)->{语句;}
(参数)->表示式
interface Book{
public static final double price=21.8;
public static final String title="诗词";
public void show(double price,String title);
}
public class Lam {
public static void main(String[] args) {
//Lamda (参数)->{语句;}
fun((double price,String title)->{
System.out.println("书的价格:"+price);
System.out.println("书的名字:"+title);
});
}
public static void fun(Book b){//传递接口类型参数
b.show(34.6,"歌曲");
}
}
【5】
interface Book{
public static final double price=21.8;
public static final String title="诗词";
public String show(double price,String title);
}
public class Lam {
public static void main(String[] args) {
//Lamda (参数)->表示式
fun((double price,String title)->
"书的价格:"+price+"书的名字:"+title
);
}
public static void fun(Book b){//传递接口类型参数
System.out.println(b.show(34.6,"歌曲"));
}
}
【7】
add(x+y)练习Lamde
interface Inte{
public int add(int x,int y);
}
public class Lam {
public static void main(String[] args) {
//Lamda
fun(
(a,b)->a+b
);
}
public static void fun(Inte i){
System.out.println(i.add(34,4));
}
}
总结:
Lamde最终解决的是 定义过多匿名内部类的问题
Lamda表达式的更多相关文章
- 解读ASP.NET 5 & MVC6系列(12):基于Lamda表达式的强类型Routing实现
前面的深入理解Routing章节,我们讲到了在MVC中,除了使用默认的ASP.NET 5的路由注册方式,还可以使用基于Attribute的特性(Route和HttpXXX系列方法)来定义.本章,我们将 ...
- SQL、Linq、lamda表达式 同一功能不同写法
一.SQL.Linq.lamda表达式 同一功能不同写法 SQL LINQ Lambda SELECT * FROM HumanResources.Employee from e in Employe ...
- [.net 面向对象程序设计进阶] (5) Lamda表达式(一) 创建委托
[.net 面向对象程序设计进阶] (5) Lamda表达式(一) 创建委托 本节导读: 通过学习Lambda表达式,学会创建委托和表达式目录树,深入了解Lambda的特性,让你的代码变的更加清晰. ...
- [.net 面向对象程序设计进阶] (6) Lamda表达式(二) 表达式树快速入门
[.net 面向对象程序设计进阶] (6) Lamda表达式(二) 表达式树快速入门 本节导读: 认识表达式树(Expression Tree),学习使用Lambda创建表达式树,解析表达式树. 学习 ...
- [.net 面向对象程序设计进阶] (7) Lamda表达式(三) 表达式树高级应用
[.net 面向对象程序设计进阶] (7) Lamda表达式(三) 表达式树高级应用 本节导读:讨论了表达式树的定义和解析之后,我们知道了表达式树就是并非可执行代码,而是将表达式对象化后的数据结构.是 ...
- Linq和Lamda表达式的简单处理方式
一 什么是LINQ? LINQ即Language Integrated Query(语言集成查询),LINQ是集成到C#和Visual Basic.NET这些语言中用于提供查询数据能力的一个新特性. ...
- python 内置函数 lamda表达式。 open 文件方法
lamda 表达式 lambda表达式 学习条件运算时,对于简单的 if else 语句,可以使用三元运算来表示,即: 普通的条件语句 if 1 == 1: name = 'kaixin' else: ...
- 为了去重复,写了一个通用的比较容器类,可以用在需要比较的地方,且支持Lamda表达式
为了去重复,写了一个通用的比较容器类,可以用在需要比较的地方,且支持Lamda表达式,代码如下: public class DataComparer<T>:IEqualityCompare ...
- 【python】lamda表达式,map
一个很好的博客:http://blog.csdn.net/mathboylinlin/article/details/9413551 博客不让转载,我只摘抄了里面几个例子,更多内容到博客里去看 lam ...
随机推荐
- ios学习总结(2) -- UIButton的使用
原文地址 UIButton的类是一个UIControl子类,它实现了在触摸屏上的按钮.触摸一个按钮拦截事件和动作消息发送到目标对象时,它的挖掘.设定的目标和行动方法都继承自UIControl.这个类提 ...
- vs c++ 将string转换为double
可以用atof()这个函数,但是这个函数的参数是char*类型的,因此需将string类型强制转换,方法为在函数的参数中写成 const_cast<const char *>(str.c_ ...
- 转圈游戏(codevs 3285)
题目描述 Description n 个小伙伴(编号从 0 到 n-1)围坐一圈玩游戏.按照顺时针方向给 n 个位置编号,从0 到 n-1.最初,第 0 号小伙伴在第 0 号位置,第 1 号小伙伴在第 ...
- windows下同时安装python2与python3
由于python2与python3并不相互兼容,并且差别较大,所以有时需要同时安装,但在操作命令行时,怎么区别python2与python3呢? 1.下载并安装Python 2.7.9和Python ...
- repo sync下载脚本
#!/bin/sh echo "======start repo sync======" repo sync while [ $? -ne 0 ]do echo "=== ...
- Javascript操作剪切板数据(支持IE、Chrome、360、搜狗),亲测!
clipboarddata只能在IE浏览器中使用,在chrome下会提示对象未定义!以下的方法支持IE.Chrome.360.搜狗等浏览器,其它浏览器还未验证. <!DOCTYPE html&g ...
- ytu 1939:统计元音(水题)
统计元音 Time Limit: 1 Sec Memory Limit: 64 MBSubmit: 68 Solved: 33[Submit][Status][Web Board] Descrip ...
- 利用JS提交表单的几种方法和验证
第一种方式:表单提交,在form标签中增加onsubmit事件来判断表单提交是否成功 <script type="text/javascript"> function ...
- 谈敏捷,谈开发 --《Agile Software Development》读后感
谈敏捷,谈开发 --<Agile Software Development>读后感 北航计算机学院 110616班 11061171 毛宇 联系方式:maoyu815930@sina.co ...
- 十六进制数'\0x'和'\x'有什么区别?(转)
区别不大,都是把数按16进制输出. \0x:当输出的数转换为16进制只有1位时,在前面补0,如 0a,其它情况按照实际情况输出. \x:按照输出数转换为16进制的实际位数输出. 此外,小写x和大写X也 ...