问题标签 [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 回答
184 浏览

java - 搜索功能接口,不带参数,返回布尔值

有什么接近Callable<Boolean>,返回booleannot Boolean,并且不抛出异常吗?

我想像这样使用它DoIt.until( ()-> someQueryWithBooleanResult() );

是的,我知道,Predicate<Void>有点相似,但我不想使用虚拟参数。

0 投票
1 回答
56705 浏览

java - 使用带参数的方法引用

我刚开始学习 Java 流并遇到了一个问题。请看以下示例。这是 Node 类的一部分:

我的意图是使用流中每个节点上的名称和结果参数调用#findChildren。我尝试使用引用 Node::findChildren 的方法,但没有成功。我很欣赏其他带有->操作员的解决方案。

是否可以将方法引用与参数一起使用?我喜欢流的想法,我只是想让代码更具可读性。

实际上,我认为有一个类似的问题Method references with a parameter我读过但无法弄清楚如何在我的代码中使用 bind2 方法。它是唯一的解决方案吗?

0 投票
0 回答
106 浏览

java - 如何在 java 8 lambda 中获取 FunctionalInterface 方法信息

我想测试两个 lambda 方法是否相等;例如:

输出:


我的目标是验证这两个 lambda 函数是相同的方法。

即有一个返回true 的测试。

这样,我可以从FunctionalInterface获取方法信息吗?

谢谢

0 投票
2 回答
229 浏览

java - 类型擦除搞砸了通用功能接口和方法参考

我有以下通用功能接口:

而这个 ArrayList 后代:

现在,我使用方法引用和类型擦除来编写这段代码:

这让我很困惑。为什么编译器会同意我将 this::doFoo 分配给 FooInterface 变量,并在代码的第一部分调用 List.add() ,只是拒绝从 ArrayList 派生的类调用相同的 add() 方法?

在我的后代班级中,类型擦除似乎正在发生一些时髦的事情,但是什么?这是一个错误吗?我做了不支持的事情吗?

0 投票
1 回答
1401 浏览

java - java中函数接口实例的相等性

我不确定如何确定功能接口的相等性/不变性。我想当我在 java 8 中使用这种语法糖时可能无法确保相等,如果你有任何提示,请告诉我。

我为我的问题制作了一个简短的代码片段。

并且我尝试以功能方式添加此接口的实例

它打印为 true,这意味着没有任何相等性检查,而且一旦我添加它,我就无法从 Set 中删除任何实例。

如果我使用功能接口作为参数,有什么方法可以比较这些实例吗?

将不胜感激任何帮助,在此先感谢!

0 投票
6 回答
1207 浏览

java - 如何在 Java 8 编译时确保方法签名“实现”功能接口

Java 8 中是否有implements方法关键字的类似物?

假设我有一个功能接口:

还有一个包含 3 个静态方法的库来“实现”这个功能接口:

将来我希望能够互换使用对这 3 种方法的任何引用作为参数。例如:

我怎样才能确保在编译时LongHashes::xorHashLongHashes::continuingHashLongHashes::randomHash具有相同的签名LongHasher.hash(long x)

0 投票
1 回答
921 浏览

java - 使用带有自定义功能接口的流

我刚刚开始在这个 Oracle 网站上查看流。看到下面的代码,我立即想到的一个问题是:如果我想重用过滤器逻辑,例如在 Person 中有一个方法“isAdult”怎么办?

这在流中作为方法引用不起作用,因为它不接受参数 Person。类似地,我将无法创建一个过滤器,该过滤器接受一个带有年龄的附加 int 参数来创建一个可参数化的“isOlderThan”逻辑。

我找不到将流与自定义功能接口结合使用的方法。你将如何模拟这种行为?在我看来,在上述场景中创建静态“isAdult”方法不是一个非常干净的解决方案,使用此类方法创建“PersonChecker”对象也不是。

谢谢

0 投票
3 回答
6510 浏览

lambda - 如何在 Java 8 中将带有参数的 lambda 表达式作为参数传递?

这是我尝试过的。它甚至不编译。

我想在这里实现/学习的几件事是:

1)如何lambda expression作为方法参数传递(在上面的main方法中)

2)如何给函数传参( handleOpertion方法中,compilationapply只带一个参数的错误)

0 投票
1 回答
5788 浏览

java - 函数式接口继承怪癖

我有一个使用了一段时间的自定义界面,看起来像这样:

我想用 JavaFunction和 Guava来改造这个接口Function,同时保持它的FunctionalInterface. 我以为我有完美的安排:

两个超接口都声明了相同的apply()方法,这个方法已经在我的接口中实现了,只留下抽象call()方法。奇怪的是,它不会编译,告诉我

'@FunctionalInterface' 注释无效;Function<T,R> 不是函数式接口

更奇怪的是,以下变体编译得很好:

第一个版本无法编译是否有原因?

0 投票
2 回答
6436 浏览

java - java 8 函数调用

过去几个月我一直在使用 Java 8,并试图了解 lambdas。我对演唱会有点了解。但是在将自定义功能接口执行为 lambda 调用时苦苦挣扎。

如果我创建 java Bifuctional 接口实现

我可以像下面那样将其称为 lambda 吗?

还是我必须创建执行方法?

下面是调用 lambda 的代码示例:

我很好奇为什么编译器不能理解这个