Java 从匿名内部类到Lambda表达式
2024-09-03 09:48:10
匿名内部类和Lambda表达式有很多类似之处,首先都是在使用的时候才对接口进行实现,只是Lambda接口中只能由一个需要被实现的方法。
所有的Lambda表达式都可以 由匿名内部类改写:
interface Face1{
//无参数无返回值
public void face();
} interface Face2{
//有一个参数无返回值
public void face(int a);
} interface Face3{
//有一个参数,有一个返回值
int face(int a);
} interface Face4{
//有两个参数,有一个返回值
int face(int a,int b);
} public class Test
{
public static void main (String[] args) throws java.lang.Exception
{
// 匿名内部类 实现接口
Face1 fn1=new Face1(){public void face(){System.out.println("匿名内部类 fn1");}};
fn1.face(); Face2 fn2=new Face2(){public void face(int a){System.out.println("匿名内部类 fn2 "+a);}};
fn2.face(10); Face3 fn3=new Face3(){public int face(int a){return a*a;}};
System.out.println("匿名内部类 fn3 :"+fn3.face(10)); Face4 fn4=new Face4(){public int face(int a,int b){return a+b;}};
System.out.println("匿名内部类 fn4 :"+fn4.face(10,9)); // Lambda表达式 实现接口
Face1 fl1=()->{System.out.println("Lambda表达式 fl1");};
fl1.face(); Face2 fl2=(a)->{System.out.println("Lambda表达式 fl2:"+a);};
fl2.face(10); Face3 fl3=(a)->{return a*a ;};
System.out.println("Lambda表达式 fl3:"+fl3.face(10)); Face4 fl4=(a,b)->a+b;
System.out.println("Lambda表达式 fl4:"+fl4.face(10,9));
}
}
运行结果:
匿名内部类 fn1
匿名内部类 fn2 10
匿名内部类 fn3 :100
匿名内部类 fn4 :19
Lambda表达式 fl1
Lambda表达式 fl2:10
Lambda表达式 fl3:100
Lambda表达式 fl4:19
Lambda表达式 在一定程度上是在匿名内部类的基础上进行代码简化(但是编译的方式不同):
Lambda的形式如: (参数)->{方法体}
1、当只有一个参数的时候可以把() 省略掉。
2、当方法体只有一条语句的时候 可以把 return关键词和{} 省略掉。
最新文章
- python 杂七杂八 :
- 黑马程序员——HTML表格布局
- (ios7) 解决Ios7中,Navigatebar 显示在主View中,和ios6 不一致问题
- CodeFirstMigrations更新数据库结构(EF数据迁移)
- LeetCode(6) - ZigZag Conversion
- freemaker分页备忘
- 如何创建windows xp 虚拟机
- Codeforces Round #198 (Div. 2) —— C
- 【SVN】使用花生壳映射VisualSVN外网地址
- ios系统 ipa文件 打包流程详解 及 常见问题处理
- 1.4.2.2. PATHS(Core Data 应用程序实践指南)
- MYSQL更改root password时遇到Access Denied的解决办法
- phpcms和php格式化时间戳
- Android进阶(二十七)Android原生扰人烦的布局
- java abs(绝对值) , max(最大值),min(最小值) 方法的应用
- javaweb(3)之JSP&;EL&;JSTL
- Matlab中导入文本文件中的数据 矩阵合并 以及C++中删除文件操作
- php5.3新垃圾回收机制详解
- Ubuntu中程序部署时无法加载动态库的解决方法
- jQuery将时间转化为时间戳或将时间戳转化为时间
热门文章
- 【Usaco 2009 Gold】JZOJ2020年9月19日提高B组T3 头晕的奶牛
- 第8.31节 Python中使用__delattr__清除属性数据
- PyQt(Python+Qt)学习随笔:QTreeView树形视图的expandsOnDoubleClick属性
- Fiddle重定向请求
- python 练习洗牌
- pycharm 本地代码同步到github上
- Day6【Scrum 冲刺博客】
- 密码学系列之:明文攻击和Bletchley Park
- 【题解】「P6771」[USACO05MAR]Space Elevator 太空电梯
- python制作命令行工具——fire