Java 匿名函数的概念和写法
匿名函数的实现
1.定义一个函数式接口。只有一个抽象方法的接口就是函数式接口
//1.定义一个函数式接口。只有一个抽象方法的接口就是函数式接口
interface ILike {
void hit(long param);
}
没有类名,必须借助接口或父类
通过实例化函数式接口就可以完成匿名内部类实现此接口并重写方法
interface ILike {
void hit(long param);
}
@Test
void testAnonymous() throws Exception {
//匿名内部类,没有类名称,必须借助接口
ILike like = new ILike() {
@Override
public void hit(long param) {
System.out.println("i like anonymous => " + param);
}
};
for (int i = 0; i < 10; i++) {
like.hit(System.currentTimeMillis());
Thread.sleep(1000);
}
}
用 Lambda 简化匿名内部类的写法
匿名内部类是为了省去类名的写法
Lambda 简化写法不但可以省去类名,还可以省去接口名和函数名。因为只有一个抽象方法,可以直接实现并指向这个抽象方法和方法体
//1.定义一个函数式接口。只有一个抽象方法的接口就是函数式接口
interface ILike {
void hit(long param);
}
@Test
void testLambda() throws Exception {
// 用lambda简化,因为接口中只有一个函数,所以可以直接省略实例化的接口名和函数名
ILike like = (param) -> {
System.out.println("i like lambda => " + param);
};
for (int i = 0; i < 10; i++) {
like.hit(System.currentTimeMillis());
Thread.sleep(1000);
}
}
interface PrintInfo {
void print(String data);
}
static void printJob(PrintInfo printInfo, String data) {
printInfo.print(data);
}
@Test
void testLambda2() {
printJob(new PrintInfo() {
@Override
public void print(String statement) {
System.out.println("We're learning " + statement);
}
}, "Lambda");
}
interface PrintInfo {
void print(String data);
}
static void printJob(PrintInfo printInfo, String data) {
printInfo.print(data);
}
@Test
void testLambda2() {
printJob(statement -> System.out.println("We're learning " + statement), "Lambda");
}
结论
- 匿名函数写法和匿名类写法的前提必须基于函数式接口
- 匿名函数写法和匿名类写法其本质是同一个东西,只是简化写法不同
- 使用Lambda表达式简写匿名函数时,可以同时省略实现类名、函数名。除此外也可以使用传统写法
Java 匿名函数的概念和写法的更多相关文章
- js中匿名函数的N种写法
匿名函数没有实际名字,也没有指针,怎么执行? 关于匿名函数写法,很发散~ +号是让函数声明转换为函数表达式.汇总一下 最常见的用法: 代码如下: (function() { alert('water ...
- js自调用匿名函数的三种写法
第一种: (function(){ console.log(‘hello world”) })() 第二种: (function(){ console.log(‘hello world’) }()) ...
- C#中委托,匿名函数,lamda表达式复习
一.委托 1.就给类比较,类用class声明,委托用delegate声明. 2.委托要指向一个真正的方法. 3.委托的签名,要和指向的方法一样. //1.声明一个委托 public delegate ...
- JS匿名函数理解
匿名函数的基本形式为(function(){...})(); 前面的括号包含函数体,后面的括号就是给匿名函数传递参数并立即执行之 匿名函数的作用是避免全局变量的污染以及函数名的冲突 1.小括号的作 ...
- Python 中的匿名函数,你滥用了吗?
概念 我们从一个例子引入. 这里有一个元素为非空字符串的列表,按字符串最后一个字母将列表进行排序.如果原列表是 ['abc', 'g', 'def'],则结果应该是 ['abc', 'def', 'g ...
- Python的程序结构[4] -> 函数/Function[2] -> 匿名函数
匿名函数 / Anonymous Function 匿名函数是一种不需要绑定函数名的函数 (i.e. functions that are not bound to a name).匿名函数通过 la ...
- Java 终于在 Java 8 中引入了 Lambda 表达式。也称之为闭包或者匿名函数。
本文首发于 blog.zhaochunqi.com 转载请注明 blog.zhaochunqi.com 根据JSR 335, Java 终于在 Java 8 中引入了 Lambda 表达式.也称之为闭 ...
- (转)Javascript匿名函数的写法、传参、递归
(原)http://www.veryhuo.com/a/view/37529.html (转)javascript匿名函数的写法.传参和递归 javascript匿名函数的写法.传参和递归 http: ...
- (转)javascript匿名函数的写法、传参和递归
(原)http://www.veryhuo.com/a/view/37529.html (转)javascript匿名函数的写法.传参和递归 http://www.veryhuo.com 2011-0 ...
- 关于js中立即执行的匿名函数写法
/*最流行的写法*/ (function() { alert("run!") })(); /* !号可以有1~正无穷个,所以这一种就可以衍生无数种方式 */ !!!(functio ...
随机推荐
- 【译】NoClassDefFoundError和ClassNotFoundException的不同(转)
https://www.jianshu.com/p/93d0db07d2e3 本文翻译自:Difference between NoClassDefFoundError vs ClassNotFoun ...
- mutable关键词
类中的 mutable mutable 从字面意思上来说,是「可变的」之意. 若是要「顾名思义」,那么这个关键词的含义就有些意思了.显然,「可变的」只能用来形容变量,而不可能是「函数」或者「类」本身. ...
- Android 锁屏时的生命周期
锁定屏幕前,应用被打开:onCreate->onStart->onResume 此时按下电源键,锁定屏幕:onPause->onStop 解锁屏幕,重新回到应用:onRestart- ...
- Hdu4742 (CDQ分治)
题意:给出n个三维点对(x,y,z),可随意排列,求三维非严格最长上升子序列长度和最长上升子序列数量. 输入格式:第一行为一整数T表示用例组数,每组用例第一行为一整数n表示点数,之后n行每行三个整数x ...
- 7 种查询策略教你用好 Graph RAG 探索知识图谱
近来 NebulaGraph 社区在 LLM + Graph 和 Graph RAG 领域进行了深入的探索和分享.在 LlamaIndex 和 LangChain 中,NebulaGraph 引入了一 ...
- 2023-12-13:用go语言,密码是一串长度为n的小写字母,一则关于密码的线索纸条, 首先将字母a到z编号为0到25编号, 纸条上共有n个整数ai,其中a1表示密码里第一个字母的编号, 若i>1的
2023-12-13:用go语言,密码是一串长度为n的小写字母,一则关于密码的线索纸条, 首先将字母a到z编号为0到25编号, 纸条上共有n个整数ai,其中a1表示密码里第一个字母的编号, 若i> ...
- PyTorch 中自定义数据集的读取方法
显然我们在学习深度学习时,不能只局限于通过使用官方提供的MNSIT.CIFAR-10.CIFAR-100这样的数据集,很多时候我们还是需要根据自己遇到的实际问题自己去搜集数据,然后制作数据集(收集数据 ...
- 15、string
1.string是什么? Go中的字符串是一个字节的切片,可以通过将其内容封装起在""中来创建字符串.Go中的的字符串是Unicode兼容的并且是UTF-8编码的. 2.strin ...
- Selenium-[实例]猫眼电影爬取
import random import time from selenium import webdriver from selenium.webdriver import ActionChains ...
- 免费背景音人声分离解决方案MVSEP-MDX23,足以和Spleeter分庭抗礼
在音视频领域,把已经发布的混音歌曲或者音频文件逆向分离一直是世界性的课题.音波混合的物理特性导致在没有原始工程文件的情况下,将其还原和分离是一件很有难度的事情. 言及背景音人声分离技术,就不能不提Sp ...