函数式编程--lambda表达式对比匿名内部类
来源:互联网 发布:贪心算法解决tsp问题 编辑:程序博客网 时间:2024/05/24 02:35
从前面的整理中我们看出了,Lambda表达式其实是匿名内部类的一种简化,因此它可以部分取代匿名内部类。
2),Lambda表达式创建的对象与匿名内部类生成的对象一样,都可以直接调用从接口中继承的默认方法。
我们还是写一段代码来看一下吧:
2),匿名内部类可以为抽象类后者普通类创建实例,但是lambda表达式只能为函数式接口创建实例。
3),匿名内部类实现的抽象方法的方法体允许调用接口中定义的默认方法,但是Lambda表达式的代码块不允许调用接口中定义的默认方法。
- 1,Lambda表达式与匿名内部类存在如下相同点:
2),Lambda表达式创建的对象与匿名内部类生成的对象一样,都可以直接调用从接口中继承的默认方法。
我们还是写一段代码来看一下吧:
/** * @创建作者: LinkinPark * @创建时间: 2015年10月27日 * @功能描述: Lambda表达式和匿名内部类对比 */public class Test{private int age = 25;private static String name = "LinkinPark...";public void test(){String finalName = "NightWish";//实现函数式接口,创建一个对象A a = () ->{//1,访问“effectively final”变量System.out.println("访问局部变量:" + finalName);//Local variable finalName defined in an enclosing scope must be final or effectively final代码报错//finalName = "NightWish...";//2,访问外部类的实例变量System.out.println("访问外部类的实例变量:" + age);//3,访问外部类的类变量System.out.println("访问外部类的类变量:" + name);//4,Lambda表达式的代码块中不允许调用接口中定义的默认方法,下面代码报错System.out.println(getAge());};a.test();//调用A接口的静态方法和默认方法System.out.println(A.getName());System.out.println(a.getAge());}public static void main(String[] args){new Test().test();}}@FunctionalInterfaceinterface A{void test();static String getName(){return "函数式接口的静态方法。。。";}default String getAge(){return "函数式接口的默认方法。。。";}}上面的代码阅读没什么问题,有一点要注意的是,由于Lambda表达式访问了finalName的局部变量,因此该局部变量相当于有一个final修饰,所以不能重新赋值。
- 2,Lambda表达式与匿名内部类的区别
2),匿名内部类可以为抽象类后者普通类创建实例,但是lambda表达式只能为函数式接口创建实例。
3),匿名内部类实现的抽象方法的方法体允许调用接口中定义的默认方法,但是Lambda表达式的代码块不允许调用接口中定义的默认方法。
0 1
- 函数式编程--lambda表达式对比匿名内部类
- 10、匿名内部类实现接口,lambda表达式实现函数式接口
- Lambda表达式和匿名内部类
- Java匿名内部类与Lambda表达式
- lambda表达式代替匿名内部类
- Lambda表达式和匿名内部类
- JAVA8 匿名内部类和lambda表达式
- Java:匿名内部类和Lambda表达式
- 内部类、匿名类、Lambda表达式
- Java的匿名内部类与Lambda表达式
- 第6章 Lambda表达式和匿名内部类
- Lambda表达式与匿名内部类的联系和区别
- C#编程指南 匿名函数 lambda表达式
- 匿名函数 & Lambda 表达式
- 匿名函数 - lambda表达式
- 匿名函数 lambda表达式
- Java SE8 Lambda 基础入门---lambda表达式与匿名内部类
- 内部类和Lambda表达式
- 有关于两个app互相跳转问题
- 8、指针
- 050.performSelector 动态调用方法
- 今天提取了VS2015的编译器 用在 VS2010, 感觉真不错
- 导出 poi 批注
- 函数式编程--lambda表达式对比匿名内部类
- 049. isKindOfClass 检查继承关系
- 自学Unity之做一个MOBA游戏2——镜头移动
- 如何避免adtbundle新建项目总是产生一个appcompat_v7和fragment_main.xml
- Android基础入门教程——8.3.8 Paint API之—— Xfermode与PorterDuff详解(五)
- git安装教程和使用方法记录
- 滴水鲸
- 软考-分治算法
- 【随机过程】随机过程之泊松过程的直观理解