匿名内部类和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关键词和{} 省略掉。

最新文章

  1. python 杂七杂八 :
  2. 黑马程序员——HTML表格布局
  3. (ios7) 解决Ios7中,Navigatebar 显示在主View中,和ios6 不一致问题
  4. CodeFirstMigrations更新数据库结构(EF数据迁移)
  5. LeetCode(6) - ZigZag Conversion
  6. freemaker分页备忘
  7. 如何创建windows xp 虚拟机
  8. Codeforces Round #198 (Div. 2) —— C
  9. 【SVN】使用花生壳映射VisualSVN外网地址
  10. ios系统 ipa文件 打包流程详解 及 常见问题处理
  11. 1.4.2.2. PATHS(Core Data 应用程序实践指南)
  12. MYSQL更改root password时遇到Access Denied的解决办法
  13. phpcms和php格式化时间戳
  14. Android进阶(二十七)Android原生扰人烦的布局
  15. java abs(绝对值) , max(最大值),min(最小值) 方法的应用
  16. javaweb(3)之JSP&EL&JSTL
  17. Matlab中导入文本文件中的数据 矩阵合并 以及C++中删除文件操作
  18. php5.3新垃圾回收机制详解
  19. Ubuntu中程序部署时无法加载动态库的解决方法
  20. jQuery将时间转化为时间戳或将时间戳转化为时间

热门文章

  1. 【Usaco 2009 Gold】JZOJ2020年9月19日提高B组T3 头晕的奶牛
  2. 第8.31节 Python中使用__delattr__清除属性数据
  3. PyQt(Python+Qt)学习随笔:QTreeView树形视图的expandsOnDoubleClick属性
  4. Fiddle重定向请求
  5. python 练习洗牌
  6. pycharm 本地代码同步到github上
  7. Day6【Scrum 冲刺博客】
  8. 密码学系列之:明文攻击和Bletchley Park
  9. 【题解】「P6771」[USACO05MAR]Space Elevator 太空电梯
  10. python制作命令行工具——fire