`
jobar
  • 浏览: 347431 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

Lambda表达式基础(5)- Lambda表达式是对象吗?

 
阅读更多
Lambda表达式是对象吗?

是的,要加一个限定条件:他们是对象子类型的实例,但不一定有唯一标识。一个Lambda表达式是一个函数式接口的一个实例,它本身就是Object的子类型的一个实例。为了说明这一点,考虑下面的合法赋值:
    Runnable r = () -> {};   // 创建一个Lambda表达式并赋值给一个引用变量r 
    Object o = r;            // 普通宽化转换

为了理解这种情况,了解在java8的实现中有短期目标和长期愿景两种情况是很有帮助的。短期目标是支持集合内部迭代,以有效利用日益增长的硬件的并行特性。长期愿景是引导java支持更趋向于函数式的编程。当前只有短期目标在推进中,但设计师们小心翼翼以避免破坏函数式编程的设想,这可能在将来会有完全成熟的函数类型,诸如在Haskell和Scala中发现的那样。

要回答Lambda是否是对象的问题就必须要基于它们是如何融入Java的类型系统中而不是在某个时刻他们是如何碰巧被实现的。他们作为对象的情形源于让它们实例化接口的基本决策,有正反两面

1 这使得lambda表达式以相对较少的干扰融入现有的类型系统;
2 Lambda表达式继承了Object的方法。

但是请注意,因为lambda表达式不必有唯一标识,继承自Object的equals方法跟原来的语义不一致。

原文链接:http://www.lambdafaq.org/are-lambda-expressions-objects/
分享到:
评论

相关推荐

    核心基础-利用lambda表达式简化编程-Python实例源码.zip

    本资源"核心基础-利用lambda表达式简化编程-Python实例源码.zip"提供了关于如何使用lambda表达式进行编程的实例源码,涵盖了自动化、数据分析、游戏开发以及网络爬虫等多个应用领域。 首先,我们来深入理解lambda...

    Java 8 lambda表达式

    Java 8 的引入,尤其是Lambda表达式,对Java语言产生了深远的影响,它为Java开发者带来了更简洁、更灵活的编程方式。Lambda表达式是函数式编程的核心元素,它允许我们将函数作为方法参数传递,或者将代码块当作数据...

    一份易上手的C# Lambda表达式入门学习资料

    本文旨在为新手提供易于理解的C# Lambda表达式入门学习资料,帮助读者快速掌握Lambda表达式的基础知识和应用场景。 Lambda表达式是什么? -------------------- Lambda表达式是一种匿名函数,类似于函数式编程的...

    Lambda表达式--凌尘.pptx

    Lambda 表达式本质上是一个没有名字的函数,允许我们将代码作为一个对象进行传递。这种功能使得 Java 的语言表达能力得到显著增强,特别是在处理集合和流API时,能够写出更高效、更易读的代码。 Lambda 表达式的...

    Java:解锁Lambda表达式的魔法-从零开始的函数式编程之旅

    ### Java:解锁Lambda表达式的魔法—从零开始的函数式编程之旅 #### 一、Lambda表达式:Java中的函数式编程基石 Lambda表达式是Java 8引入的一个重要特性,它为Java带来了函数式编程的能力。在此之前,Java一直被...

    2_Lambda表达式.zip

    Lambda表达式是Java编程语言中的一个关键特性,自Java 8开始引入,它极大地简化了函数式编程,尤其是在处理集合数据时。Lambda表达式的主要目的是为了创建匿名函数,即没有名字的函数,它可以被当作一个值传递给方法...

    C#lambda表达式的使用

    Lambda 表达式是 C# 编程语言中的一个重要概念,也是函数式编程的基础。Lambda 表达式可以被用作创建委托对象或表达式树类型。所有的 Lambda 表达式都使用操作符“=>“,表示“goes to (转变为)”。 Lambda 表达式...

    Java8的lambda表达式

    一、Lambda表达式基础 1. **什么是Lambda表达式?** Lambda表达式是一种新的语法结构,它可以被看作是一段没有名字的函数。这种函数可以接受零个或多个参数,但不包含任何方法名,只包含一组表达式。Lambda表达式...

    C#将Lambda表达式转成Sql语句

    在.NET框架中,C#是一种强大的编程语言,它支持Lambda表达式,这使得代码更加简洁、易读。Lambda表达式通常用于LINQ(Language Integrated Query)查询,它允许程序员使用类似SQL的语法在内存中的数据集上进行操作。...

    C++ 11 lambda 表达式

    - 与`std::function`结合:`std::function`模板类可以存储任何具有合适调用约定的对象,包括lambda表达式。 5. **例子** 下面是一个使用VS2010编译的简单lambda表达式示例: ```cpp #include #include ...

    C++ 中的 Lambda 表达式

    5. **尾随返回类型**:定义Lambda表达式的返回类型。 6. **Lambda体**:包含实际执行的代码。 #### Lambda表达式的组成部分详解 - **Capture子句**:Lambda表达式的第一个组成部分是capture子句。这个子句用来指定...

    java8lambda表达式Demo

    Java 8 是一个重要的Java平台版本,因为它引入了许多新特性,其中最显著的就是Lambda表达式。Lambda表达式是函数式编程的关键元素,它允许我们以更简洁、更易读的方式编写代码,特别是在处理集合和并发任务时。在这...

    Lambda表达式的例子

    假设我们有一个需要排序的Person对象列表,Person对象包含name和age属性,我们可以定义一个Comparator接口的实现,使用Lambda表达式: ```java List<Person> people = ... // 初始化Person对象的列表 // 使用...

    java8 lambda表达式学习总结

    3. **方法引用**:当Lambda体完全等同于某个已存在的方法时,可以使用方法引用来替代Lambda表达式,如 `Arrays.sort(list, Comparator.comparingInt(Integer::intValue))`。 4. **构造器引用**:同样,Lambda 表达式...

    Lambda表达式.pdf

    1. Lambda表达式基础: Lambda表达式是Java 8引入的一种简洁的表示可传递的匿名函数的方式。它允许我们将函数作为参数传递给方法,或把代码作为数据处理。Lambda表达式由参数列表、箭头符号“->”和方法体三部分组成...

    Java8的Lambda表达式

    Java 8引入了Lambda表达式,这是一种简洁的编写代码的方式,可以将代码块作为参数传递给方法,或者作为赋值给变量的对象。Lambda表达式为Java增加了函数式编程的能力,使代码更加简洁和灵活。在Java 8中,Lambda...

    jdk1.8 Lambda表达式

    Lambda 表达式简化了这种过程,让我们可以直接传递一段代码,而不是创建一个完整的对象。 Lambda 表达式的语法: Lambda 表达式的标准格式为: ``` (parameters) -> expression 或者 (parameters) -> { statements;...

    将字符串转换为lambda表达式

    将字符串转换为`lambda`表达式主要涉及两个步骤:解析字符串和构建函数对象。这个过程通常需要使用到Python的`eval()`函数或`exec()`函数,但这两个函数在安全性上存在风险,因为它们会执行传入的代码,可能导致代码...

    精通lambda表达式: java多核编程

    《精通Lambda表达式:Java多核编程》这本书深入探讨了Java编程中的一种重要特性——Lambda表达式,以及如何在多核环境下充分利用这一特性提高程序性能。Lambda表达式是Java 8引入的关键特性之一,它极大地简化了函数...

    Lambda表达式测试demo

    1. 使用Lambda表达式实现`Comparator`接口,进行对象比较,例如根据某个属性排序列表。 2. 使用`Function`接口转换数据,例如将字符串转换为整数。 3. 使用`Predicate`接口进行条件判断,筛选列表中的元素。 4. 使用...

Global site tag (gtag.js) - Google Analytics