问题标签 [functional-interface]

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 投票
1 回答
654 浏览

java - 功能接口接受流还是可选?

我想@FunctionalInterface在 Java 中创建一个接受Streams 或Optional类型作为参数的。我试图这样做,但由于它们不共享通用接口,因此似乎无法实现。我还尝试使用调用的通用包装类,@FunctionalInterface但由于我在运行时需要类型参数,所以这似乎是不可能的。

最小示例:


也许我的方法是错误的......我很想收到反馈和/或解决这个问题。

0 投票
1 回答
219 浏览

java - Function.class 中下界通配符的目的是什么?

在 Java8 的 Function.class 中,我们有:

撰写接受:

而不是:

是否有任何合理的情况表明“V”是下界这一事实很重要?

0 投票
3 回答
353 浏览

java - Java8 中是否有标准化的通用功能接口?

我想知道是否有人以及在哪里完成了定义一组通用功能接口以简化和标准化 lambda 的使用的工作。我来自 C#,核心库完成了这项工作。

我读过“BiFunction”,发现它很笨拙。特别是当扩展到 TriFunction 等时。

我想出了以下内容:

0 投票
1 回答
1018 浏览

java - Java - lambda 推断类型

我正在玩弄 a 的使用FunctionalInterface。我到处都看到了以下代码的多种变体:

我正在寻找以下行为:

ifPresent只接受a SupplierOptional不能扩展。

我创建了以下内容FunctionalInterface

这允许我这样做:

可以添加更多默认方法来执行以下操作

它读起来很好Do [my function] and return [function return value] if [my condition] holds true for [my input], otherwise null

当我执行以下操作时,为什么编译器不能推断AString传递给ifNotNull)和BInteger返回)的类型:parseInt

这导致:

不兼容的类型:无效的方法引用

0 投票
2 回答
7610 浏览

java - Java 8 通用 java.util.Function

我正在了解FunctionalInterfaceJava 8 中存在哪些。在做了一些基本的功能示例之后,我尝试对 GenericType 参数做同样的事情。

但是eclipse编译器会抛出错误

The type AreaService does not define createArea(T) that is applicable here

不能在 FunctionalInterface 中定义泛型类型参数吗?

0 投票
5 回答
10713 浏览

java - 有没有办法在 24 以下的 Android API 上使用 Java 8 功能接口?

我可以使用 retrolambda 来启用 Android API 级别 <24 的 lambda。所以这行得通

这也有效

但是这个不

最后一个适用于 Android API Level 24,但在其他设备上,此代码会导致崩溃

我没有使用retrolambda,而是尝试启用Java 8。前两个代码示例仍然有效,尽管butterknife 停止工作。https://developer.android.com/preview/j8-jack.html#configuration这里ava.util.function说支持,但是我运行第三个的时候还是会crash,这次有点不一样

0 投票
1 回答
325 浏览

performance - 何时在 JAVA 8 中使用函数式接口

我在 java7 中有项目,我现在正在尝试将其转换为 java8。

在那我有一个代码调用一个我已经转换为Java 8的方法,如下所示。

爪哇 7:

爪哇 8

现在我的问题是将这些方法调用转换为JAVA 8没有任何意义。

如果是这样 JAVA 7 和 JAVA 8 中的上述代码有什么区别。

任何人都可以请澄清这一点???

0 投票
1 回答
5610 浏览

unit-testing - 基于 Consumer 功能接口的单元测试回调

我正在尝试对在消费者功能接口中作为回调运行的代码进行单元测试。

本质上,我想通过“toBeMockedDependency”提供经过测试的代码一些经过测试的“消息”。

如何模拟“toBeMockedDependency”以提供预定义的消息?
这是正确的方法吗?

0 投票
2 回答
128 浏览

java - Is it possible to use a specific method of an object (or a static method) as a functor in Java 8

I am trying to understand functional interfaces in Java 8. Suppose f() to the functor:

Is it possible to create a similar construction using the Java 8 functional interface ?

In other word,is it possible to use a specific method of the object (or a static method) as a functor? If so, could you give a short example?

The functor represent an illustration of the function working with a data member (a) and some additional parameters (b, c, d )...

0 投票
3 回答
914 浏览

java - 当我将 lambda 表达式作为参数传递时,它怎么可能访问此范围内的其他变量?

输出:[11, 13, 15, 17, 19]

使用的setAll()函数来源如下:

IntUnaryOperator是一个功能接口,这是其源代码的一部分:

如果我错了,请纠正我,但我对 Java 中 lambda 表达式的理解是,当我将 lambda 表达式作为参数传递给方法时,会创建并调用setAll()实现该接口的匿名类的对象。并且 lambda 表达式本质上是该方法的实现,所以我相信它会转化为:IntUnaryOperatorgeneratorapplyAsInt()

对我来说它可以访问是有道理的,operand因为它作为参数传递array[i] = generator.applyAsInt(i);但是,我不明白它是如何操作b的——它不是作为参数传递的,所以它怎么可能被引用?我错过了什么?