问题标签 [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.
java - 搜索功能接口,不带参数,返回布尔值
有什么接近Callable<Boolean>
,返回boolean
not Boolean
,并且不抛出异常吗?
我想像这样使用它DoIt.until( ()-> someQueryWithBooleanResult() );
是的,我知道,Predicate<Void>
有点相似,但我不想使用虚拟参数。
java - 使用带参数的方法引用
我刚开始学习 Java 流并遇到了一个问题。请看以下示例。这是 Node 类的一部分:
我的意图是使用流中每个节点上的名称和结果参数调用#findChildren。我尝试使用引用 Node::findChildren 的方法,但没有成功。我很欣赏其他带有->
操作员的解决方案。
是否可以将方法引用与参数一起使用?我喜欢流的想法,我只是想让代码更具可读性。
实际上,我认为有一个类似的问题Method references with a parameter我读过但无法弄清楚如何在我的代码中使用 bind2 方法。它是唯一的解决方案吗?
java - 如何在 java 8 lambda 中获取 FunctionalInterface 方法信息
我想测试两个 lambda 方法是否相等;例如:
输出:
我的目标是验证这两个 lambda 函数是相同的方法。
即有一个返回true 的测试。
这样,我可以从FunctionalInterface获取方法信息吗?
谢谢
java - 类型擦除搞砸了通用功能接口和方法参考
我有以下通用功能接口:
而这个 ArrayList 后代:
现在,我使用方法引用和类型擦除来编写这段代码:
这让我很困惑。为什么编译器会同意我将 this::doFoo 分配给 FooInterface 变量,并在代码的第一部分调用 List.add() ,只是拒绝从 ArrayList 派生的类调用相同的 add() 方法?
在我的后代班级中,类型擦除似乎正在发生一些时髦的事情,但是什么?这是一个错误吗?我做了不支持的事情吗?
java - java中函数接口实例的相等性
我不确定如何确定功能接口的相等性/不变性。我想当我在 java 8 中使用这种语法糖时可能无法确保相等,如果你有任何提示,请告诉我。
我为我的问题制作了一个简短的代码片段。
并且我尝试以功能方式添加此接口的实例
它打印为 true,这意味着没有任何相等性检查,而且一旦我添加它,我就无法从 Set 中删除任何实例。
如果我使用功能接口作为参数,有什么方法可以比较这些实例吗?
将不胜感激任何帮助,在此先感谢!
java - 如何在 Java 8 编译时确保方法签名“实现”功能接口
Java 8 中是否有implements
方法关键字的类似物?
假设我有一个功能接口:
还有一个包含 3 个静态方法的库来“实现”这个功能接口:
将来我希望能够互换使用对这 3 种方法的任何引用作为参数。例如:
我怎样才能确保在编译时LongHashes::xorHash
,LongHashes::continuingHash
并LongHashes::randomHash
具有相同的签名LongHasher.hash(long x)
?
java - 使用带有自定义功能接口的流
我刚刚开始在这个 Oracle 网站上查看流。看到下面的代码,我立即想到的一个问题是:如果我想重用过滤器逻辑,例如在 Person 中有一个方法“isAdult”怎么办?
这在流中作为方法引用不起作用,因为它不接受参数 Person。类似地,我将无法创建一个过滤器,该过滤器接受一个带有年龄的附加 int 参数来创建一个可参数化的“isOlderThan”逻辑。
我找不到将流与自定义功能接口结合使用的方法。你将如何模拟这种行为?在我看来,在上述场景中创建静态“isAdult”方法不是一个非常干净的解决方案,使用此类方法创建“PersonChecker”对象也不是。
谢谢
lambda - 如何在 Java 8 中将带有参数的 lambda 表达式作为参数传递?
这是我尝试过的。它甚至不编译。
我想在这里实现/学习的几件事是:
1)如何lambda expression
作为方法参数传递(在上面的main
方法中)
2)如何给函数传参( handleOpertion
方法中,compilation
apply只带一个参数的错误)
java - 函数式接口继承怪癖
我有一个使用了一段时间的自定义界面,看起来像这样:
我想用 JavaFunction
和 Guava来改造这个接口Function
,同时保持它的FunctionalInterface
. 我以为我有完美的安排:
两个超接口都声明了相同的apply()
方法,这个方法已经在我的接口中实现了,只留下抽象call()
方法。奇怪的是,它不会编译,告诉我
'@FunctionalInterface' 注释无效;Function<T,R> 不是函数式接口
更奇怪的是,以下变体编译得很好:
第一个版本无法编译是否有原因?
java - java 8 函数调用
过去几个月我一直在使用 Java 8,并试图了解 lambdas。我对演唱会有点了解。但是在将自定义功能接口执行为 lambda 调用时苦苦挣扎。
如果我创建 java Bifuctional 接口实现
我可以像下面那样将其称为 lambda 吗?
还是我必须创建执行方法?
下面是调用 lambda 的代码示例:
我很好奇为什么编译器不能理解这个