Java8新特性 (一)Lambda
2019-11-14 16:07:32来源:博客园 阅读 ()
Java8新特性 (一)Lambda
前言:
这两天彻底的复习了一遍Java8的各种新特性,趁着热乎劲,把知识点整理成博客的形式保存一下。
一、Lambda介绍
Lambda表达式 : 也可称为闭包,Lambda允许把函数作为一个方法的参数(函数作为参数传递到方法中),免去了使用匿名方法的麻烦,并且给予Java简单但是强大的函数化的编程能力
语法格式:
(parameters) -> expression
或者
(parameters) ->{ statements; }格式说明:
():接口中抽象方法的参数列表,没有参数就空着,有参数则写出参数,多个参数用逗号分隔
->:传递的意思,将参数传递给方法体{}
{}:重写接口的抽象方法的方法体
二、Lambda用法实例
1.简单实例(基础用法的规则)
1.1 无参数时,可以省略括号内容
()->10 //返回结果值:10
1.2 传入String类型的参数
(String s)->System.out.print(s) //打印s的内容
1.3 传入的参数类型可以省略,如下
//
a->a*10 //返回结果值:a*10(传入一个参数时,可以省略括号)
(a,b)->a*b //返回结果值:a*b(传入两个或以上参数时,不能省略括号,)
2.函数式接口
2.1 Lambda实现自定义接口Calculator
首先定义一个函数式接口 Calculator
,包含唯一一个抽象方法 Calcu()
public interface Calculator {
public abstract int Calcu(int x, int y);
}
其次定义一个 invokeCalcu()
,接收参数类型为接口
public static void invokeCalcu(int x, int y, Calculator calculator) {
int sum = calculator.Calcu(x, y);
System.out.println("sum = " + sum);
}
最后调用 invokeCalcu()
,一共有三种方法实现:
1)使用匿名内部类传入接口,并实现抽象方法
invokeCalcu(10, 20, new Calculator() {
@Override
public int Calcu(int x, int y) {
return x + y;
}
});
2)使用Lambda表达式,简化操作
invokeCalcu(120, 130, (a, b) -> a + b);
2.2 Lambda表达式实现多线程接口实例 Runnable
//使用匿名内部类的方式实现多线程的创建
new Thread(new Runnable() {
@Override
public void run() {
System.out.println("currentThreadName = " + Thread.currentThread().getName());
}
}).start();
//使用lambda表达式实现多线程
new Thread(() -> System.out.println("currentThread().getName() = " + Thread.currentThread().getName())).start();
接口中 有且仅有唯一一个抽象方法 ,称之为函数式接口(这种类型的接口也称为SAM接口,即Single Abstract Method interfaces)
使用前提:
- 使用Lambda必须具有接口,且要求接口中有且仅有一个抽象方法
- 无论是 JDK内置的
Runnable
、Comparator
接口还是自定义的接口,只有当接口中的抽象方法存在且唯一时,才可以使用Lambda- 使用Lambda必须具有上下文推断
方法的参数或局部变量类型必须为Lambda对应的接口类型,才能使用Lambda作为该接口的实例
有且仅有一个抽象方法的接口,称为
“函数式编程”
原文链接:https://www.cnblogs.com/wuyiz/p/11863471.html
如有疑问请与原作者联系
标签:
版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有
- Spring Boot 2.3.0 新特性Redis 拓扑动态感应 2020-06-11
- java8 stream的分组功能,具体时候是真的好用 2020-06-10
- 今天来介绍java 各版本的新特性,一篇文章让你了解 2020-06-10
- Spring Boot 2.3 新特性优雅停机详解 2020-06-08
- 原创 Spring Boot 2.3 新特性分层JAR 2020-06-08
IDC资讯: 主机资讯 注册资讯 托管资讯 vps资讯 网站建设
网站运营: 建站经验 策划盈利 搜索优化 网站推广 免费资源
网络编程: Asp.Net编程 Asp编程 Php编程 Xml编程 Access Mssql Mysql 其它
服务器技术: Web服务器 Ftp服务器 Mail服务器 Dns服务器 安全防护
软件技巧: 其它软件 Word Excel Powerpoint Ghost Vista QQ空间 QQ FlashGet 迅雷
网页制作: FrontPages Dreamweaver Javascript css photoshop fireworks Flash