问题标签 [java-8]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
15550 浏览

java - Java lambda 函数将如何编译?

它会有效地编译成其中的哪一个?

或类似的东西

那么它会取代(一种内联),还是实际上创建一个匿名类?

0 投票
1 回答
27694 浏览

java - Java Lambda 表达式

Java 8 中添加了 Lambda 表达式。我想了解为什么这很重要。对于尚未接触函数式编程习惯的 Java 程序员来说,这意味着什么?这是否意味着我可以编写性能更好或可大规模扩展的代码,或者它只会使代码不那么冗长。或者全部。

0 投票
3 回答
13955 浏览

java - “为什么选择 Apache Harmony”或“如何在 Android 上使用 Java 8”

到目前为止,我们大多数人都听说过 Java 8 将带来的很酷的特性,但 Android 不支持它。这是因为 Google 使用了适用于 Android 的Apache Harmony。这就是阻止我们(Android 应用程序开发人员)使用 lambda、接口中的默认实现、打开 String 等等来改进我们的代码的原因。当然,我们会处理一段时间,但是如果我们在应用程序中使用的某些库开始使用 Java 8 特性怎么办?据我所知,这是行不通的(如有错误请纠正我)。这会在Standard -Java 和Android -Java 之间造成不兼容。这不可能是谷歌的意图,或者至少我想不出为什么一家开发广泛采用的操作系统的公司不想永久留在一个旧的Java 版本。

问题:

  • 他们为什么使用 Apache Harmony?
  • 为什么他们不能采用更新版本的java?
  • 如果他们不想要 Oracle 的 Java,为什么他们不能使用OpenJDK的一个子集(这里是许可菜鸟)?
  • 您知道更新使用的 Java 版本的任何计划吗?
  • 您知道在当前 Android 系统上使用 Java 8 类的任何方法吗?
0 投票
3 回答
12437 浏览

java - Lambda 表达式对多核系统有哪些优势?

Lambda 表达式的Java 教程说如下:

本节讨论 Project Lambda 中包含的功能,旨在通过向 Java 语言添加闭包和相关功能来支持多核环境中的编程。

我的问题是,根据多核系统和并发/并行编程,我使用 Lambda 表达式有哪些具体优势?

0 投票
2 回答
3269 浏览

java - Java8 中引入 lambda 会改变或影响哪种 GoF 设计模式?

许多人声称 GoF 设计模式的最大部分只是缺少一流功能的解决方法。现在 Java 即将获得 lambda 表达式,其中哪些模式会受到它们的影响?哪些可以显着简化或概括?哪些将基本保持不变?欢迎任何实际的例子。

0 投票
1 回答
2979 浏览

java - Java 8 扩展方法 - 为什么不将它们称为 mixins 或 trait?

据我所知,Groovy 已经有 mixins,Scala 有 Trait。C家族具有多重继承。那么为什么 Java 中的新功能被称为“扩展方法”呢?只是同一件事的不同名称,还是有其他原因?trait 和 mixin 有什么区别?他们增加了什么,缺乏什么?


就我个人而言,我将它们视为“实现方法”而不是“扩展方法”。

0 投票
5 回答
149570 浏览

java - 我们应该如何为空值管理 jdk8 流

我知道这个主题可能有点in advance,因为 JDK8 尚未发布(而且现在还没有发布..),但我正在阅读一些关于 Lambda 表达式的文章,特别是与称为 Stream 的新集合 API 相关的部分。

这是Java Magazine 文章中给出的示例(它是一种水獭种群算法..):

我的问题是,如果在 Set 内部迭代过程中,其中一只水獭为空,会发生什么?

我希望抛出 NullPointerException 但也许我仍然停留在以前的开发范式(非功能性)中,有人可以告诉我应该如何处理吗?

如果这真的抛出 NullPointerException,我发现该功能非常危险,只能按以下方式使用:

  • 开发人员确保没有空值(可能使用以前的 .filter(o -> o != null))
  • 开发人员确保应用程序永远不会生成 null otter 或特殊的 NullOtter 对象来处理。

什么是最好的选择,或任何其他选择?

0 投票
2 回答
2408 浏览

java - 如何在 Java 8 中间接运行方法引用?

一般问题是:

  • 使用语法object::aMethod时,能不能转换成MethodHandle函数式接口之类的类型?
  • 如果不是,如果可能的话,如何在 Java 8 中间接调用方法引用?

例如,假设我们想要一个MethodRefRunneras:

它可以用作:MethodRefRunner.execute(o, o::someMethod, someParam)

在上面的代码片段中,一个选项WHATTYPE非常java.util.function.Function严格。正如这个答案所提到的,在 b75 版本之前,有一个java.util.function.Block可用的并且可能很方便。

另一方面,任何WHATTYPE可能以某种方式转换为java.lang.invoke.MethodHandle?

Java 专家注意事项:请根据需要细化问题的标题。

0 投票
1 回答
1747 浏览

java - 如何在 JDK8 中动态编译/加载 lambda 表达式?

我想获取功能接口的实例,例如来自字符串的谓词。例如,用户在 UI 的文本字段中键入 lambda 表达式以过滤一些数字列表 list.stream().filter("lambda here")

0 投票
5 回答
19224 浏览

java - Java 8 支持闭包吗?

我很困惑。我认为 Java 8 将从石器时代出现并开始支持 lambdas/closures。但是当我尝试这个时:

...它说number should be effectively final。那是呃,我认为不是关闭。这听起来就像是通过值而不是通过引用来复制环境。

奖金问题!

Android 会支持 Java 8 功能吗?