函数式编程--使用lambda表达式
public class Test
{
//处理数组
public void process(int[] array, Command cmd)
{
cmd.process(array);
} public static void main(String[] args)
{
Test test = new Test();
int[] target = { 1, 2, 3 };
test.process(target, new Command()
{ @Override
public void process(int[] array)
{
for (int i : target)
{
System.out.println(i);
}
}
});
}
} interface Command
{
//处理数组的行为
void process(int[] array);
}
现在我们使用lambda表达式改一下上面的代码:
public class Test
{
//处理数组
public void process(int[] array, Command cmd)
{
cmd.process(array);
} public static void main(String[] args)
{
Test test = new Test();
int[] target = { 1, 2, 3 };
test.process(target, (int[] array) ->
{
for (int i : target)
{
System.out.println(i);
}
});
}
} @FunctionalInterface
interface Command
{
//处理数组的行为
void process(int[] array);
}
public class Test
{ public void testA(A a)
{
System.out.println(a);
a.test();
} public void testB(B b)
{
System.out.println(b);
b.test("111");
} public void testC(C c)
{
System.out.println(c);
System.out.println("这里是接口C的表达式:" + c.test(1, 2));
} public static void main(String[] args)
{
Test test = new Test();
test.testA(() ->
{
System.out.println("这里是接口A的lambda表达式");
});
//上面的代码块只有一行代码,可以简写
test.testA(() -> System.out.println("这里是接口A的lambda表达式")); test.testB((str) -> System.out.println("这里是接口B的lambda表达式" + str));
//上面的形参参数只有一个,可以简写
test.testB(str -> System.out.println("这里是接口B的lambda表达式" + str)); test.testC((a, b) ->
{
return (a + b);
});
//上面的代码块只有一行代码,可以省略花括号,也可以省略return语句
test.testC((a, b) -> a + b);
}
} @FunctionalInterface
interface A
{
void test();
} @FunctionalInterface
interface B
{
void test(String str);
} @FunctionalInterface
interface C
{
int test(int a, int b);
}
public class Test
{ public static void main(String[] args)
{
A a = (b) ->
{
if (b > 0)
{
return 1;
}
};
}
} @FunctionalInterface
interface A
{
int test(int a);
}
4),为了在目标类型上下文中使用lambda表达式,抽象方法的类型和表达式的类型必须兼容。具体来说,lambda表达式的参数的类型和数量必须与方法的参数兼容,返回类型必须兼容,并且lambda表达式可能抛出的异常也必须能被方法接受。
int a;
test.testC((a, b) ->a + b);
函数式编程--使用lambda表达式的更多相关文章
- Java 函数式编程(Lambda表达式)与Stream API
1 函数式编程 函数式编程(Functional Programming)是编程范式的一种.最常见的编程范式是命令式编程(Impera Programming),比如面向过程.面向对象编程都属于命令式 ...
- Java 函数式编程和Lambda表达式
1.Java 8最重要的新特性 Lambda表达式.接口改进(默认方法)和批数据处理. 2.函数式编程 本质上来说,编程关注两个维度:数据和数据上的操作. 面向对象的编程泛型强调让操作围绕数据,这样可 ...
- Python函数式编程:Lambda表达式
首先我们要明白在编程语言中,表达式和语句的区别. 表达式是一个由变量.常量.有返回值的函数加运算符组成的一个式子,该式子是有返回值的 ,如 a + 1 就是个表达式, 单独的一个常量.变量 或函数调 ...
- C# 函数式编程 —— 使用 Lambda 表达式编写递归函数
最近看了赵姐夫的这篇博客http://blog.zhaojie.me/2009/08/recursive-lambda-expressions.html,主要讲的是如何使用 Lambda 编写递归函数 ...
- Java函数式编程和lambda表达式
为什么要使用函数式编程 函数式编程更多时候是一种编程的思维方式,是种方法论.函数式与命令式编程的区别主要在于:函数式编程是告诉代码你要做什么,而命令式编程则是告诉代码要怎么做.说白了,函数式编程是基于 ...
- Java8函数式编程和lambda表达式
文章目录函数式编程JDK8接口新特性函数接口方法引用函数式编程函数式编程更多时候是一种编程的思维方式,是一种方法论.函数式与命令式编程区别主要在于:函数式编程是告诉代码你要做什么,而命令式编程则是告诉 ...
- Java8函数式编程以及Lambda表达式
第一章 认识Java8以及函数式编程 尽管距离Java8发布已经过去7.8年的时间,但时至今日仍然有许多公司.项目停留在Java7甚至更早的版本.即使已经开始使用Java8的项目,大多数程序员也仍然采 ...
- Java函数式接口与Lambda表达式
什么是函数式接口? 函数式接口是一种特殊的接口,接口中只有一个抽象方法. 函数式接口与Lambda表达式有什么关系? 当需要一个函数式接口的对象时,可以提供一个lambda表达式. package l ...
- Lambda01 编程范式、lambda表达式与匿名内部类、函数式接口、lambda表达式的写法
1 编程范式 主要的编程范式有三种:命令式编程,声明式编程和函数式编程. 1.1 命令式编程 关注计算机执行的步骤,就是告诉计算机先做什么后做什么 1.2 声明式编程 表达程序的执行逻辑,就是告诉计算 ...
随机推荐
- docker with flannel
** 原创文章,请勿转载 ** docker的单host,多container环境下,是使用host的docker0网桥进行通信的.如果跨host, container之间要通信怎么办呢?答案是fla ...
- Python模块学习---Web
import urlparse url = urlparse.urlparse("http://www.python.org/doc/FAQ.html") print url pr ...
- JSR-303校验类型
空检查 @Null 验证对象是否为null @NotNull 验证对象是否不为null, 无法查检长度为0的字符串 @NotBlank 检查约束字符串是不是Null还有被Trim的长 ...
- python编码问题和逻辑运算
1,回顾昨天课程及作业 #1.使用while循环输入 1 2 3 4 5 6 8 9 10 ''' count = 0 while count < 10: count += 1 # count ...
- Ajax方式分页加载列表实现
在前面: 最近需要用到这个功能,所以这几天一直在研究这个,目前大致功能已实现,后续需要完善,但需要的功能点已完成,记录下: 1.分页功能引入bootstrap的分页插件: <script typ ...
- python抢火车票的脚本
起因: 想着那么多人,抢不到火车票.感觉到一丝感慨 所以有了抢火车票这个脚本. 0x01 思路:自动打开浏览器,自动输入账号密码 知道查看.自动预定. 0x02 要用到的模块 splinter模块: ...
- CCNA笔记(1)
一个最简单的图来了解网络结构 一个路由器经过数据传输,目标pc的网卡网线接受数据,使数据能交换,然后就连上了互联网
- 学习笔记 - 兼容ie的透明度问题
.opacity{font-size: 14px;-khtml-opacity:0.6;-moz-opacity:0.6;filter:alpha(opacity=60);filter:"a ...
- POI读写大数据量excel,解决超过几万行而导致内存溢出的问题
1. Excel2003与Excel2007 两个版本的最大行数和列数不同,2003版最大行数是65536行,最大列数是256列,2007版及以后的版本最大行数是1048576行,最大列数是16384 ...
- the method of validate slow