问题标签 [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.
intellij-idea - 如果功能接口有多个非默认方法,Idea 不会显示错误消息
我使用idea 12。
编译后看到以下结果。
我想知道这个想法在文本编辑器中没有显示错误。
是想法错误吗?
java - java.util.function包中函数接口的参数和返回类型总结
我正在寻找. 中所有接口的单个抽象方法 (SAM) 的参数和返回类型表java.util.function
。
java - Generics+FunctionalInterface 在 Eclipse 中编译并在 javac 中失败
我在 Eclipse 中创建了以下类,但javac
无法编译它,但是,我相信javac
可以解决报告的歧义:
在我看来CALL_1
是更好的匹配,因此METHOD_1
应该选择。是javac
错误,还是javac
遵循规范并且 Eclipse 使用了不应该使用的信息/猜测?
Javac 错误信息:
...对调用的引用不明确 - EclipseCompilerVsJavac 中的方法调用(Fun1,P,R_m_P)和方法调用(Fun2,P1,P2)都匹配
我使用 JDK 8 和 Eclipse STS 3.63 + 我知道有不同的编译器。我想知道我的代码是否正常。
更新: 说明:
- 调用 example.call/3
- 第一个参数:不能用于决策 - 因为 call/3 方法引用了两个 methodOverload 变体
- 第二个参数:不能使用 - call/3 都有泛型
- 第三个参数:应该用作 R_m_P 参数比 P2 泛型更具体
也就是说,CALL_1
应该选择。
java - 如何在组件图中表示 java 功能接口
我的班级有一个引用功能接口的字段 Map。
然后我扩展该类并创建该 IInvokeOperation 的匿名实例并将其添加到该 Map 中,如下所示:
这甚至会显示在组件图上吗?
java - 为什么没有在 JDK 中所有符合条件的接口上使用 @FunctionalInterface?
Java 8 为我们提供了许多有趣的方式来使用函数式接口,并为它们提供了一个新的注解:@FunctionalInterface。它的工作是告诉编译器如果我们未能遵守函数式接口的规则(请只需要一个需要覆盖的抽象方法)就对我们大喊大叫。
java.util.function 包中有43个带有这个注解的接口。搜索 jdk.1.8.0/src@FunctionalInterface
只找到 57 个命中。为什么其他可以添加的接口(如 AutoCloseable)@FunctionalInterface
仍然缺少它?
注释文档中有一些模糊的提示:
“用于指示接口类型声明旨在成为功能接口的信息注释类型”
有什么好的理由不打算不将我设计的接口(可能只是一个功能接口)用作一个接口吗?除了没有意识到它可以被添加之外,它是否意味着任何东西?
向任何已发布的接口添加抽象方法不会让任何人实现它,功能与否?假设他们只是不费心去追捕他们,我感到愤世嫉俗,但还有什么其他解释呢?
更新:查看“‘可比’应该是‘功能界面’吗?” 我发现我仍然有一些唠叨的问题。当单一方法接口和功能接口在结构上相同时,还有什么不同之处?仅仅是名字的区别吗?Comparable 和 Comparator 在语义上足够接近。事实证明它们在结构上是不同的,但仍然不是最好的例子......
是否存在这样的情况,即 SMI 在结构上可以用作功能接口,但仍然不鼓励接口名称和方法的语义含义?或者可能是 Javadocs 所暗示的合同?
java - 使用方法句柄转发功能接口上的调用
TL;DR: 我试图找到最有效的方法来动态创建功能接口的实现,该接口将调用转发到该接口的一组实例。
目标是简化接口的实现,允许客户端代码通过将处理程序(实现为功能接口)传递给适当的注册函数来为多个事件注册自己。一个例子:
这可以是这种界面的一个示例。会有很多这样的接口,每个接口都有不同的事件,所以实现应该尽可能简单,没有太多重复的代码。Event
我想通过在这样的实现中引入一种供内部使用的类型,这可能最好地实现,它允许将调用转发到所有注册的处理程序:
的实现TrainStation
可能如下所示:
这是所需代码的可管理级别。它的大部分可以提取到一个抽象类中,因此每个接口只需要一次。当然,任何减少它的方法都是一个加号,但如果不暴露Event
实例,我看不到直接的方法。
继续使用这种方法,有趣的是接口的实现Event
。我当然可以想象用普通的旧反射来做这件事,它的表现可以接受但不是很出色。但我认为,对于 Java 1.7 或 1.8,现在应该有一种更有效和/或更直接的方式来实现Event.getMasterHandler()
使用新 API 的返回值,尤其是MethodHandle
,因为我们知道每个处理程序接口都是一个函数式接口。我该怎么做呢?
java - Java 8 中的功能接口(方法执行时间记录器)
我有两种方法:
//记录任何方法花费的时间
不确定如何使用 JDK8 功能接口和方法引用来为方法 'logMethodExecTime' 定义正确的语法?
以下不起作用:
和调用:
java - Warning: [overloads] method m1 is potentially ambiguous with method m2
When I compile this with javac -Xlint Test.java
I get a couple of warnings:
If I change Consumer
to Supplier
the warnings disappear. This program is warning free:
Why is that? What does this warning mean? How are these methods ambiguous? Is it safe to suppress the warning?
java - Java中的不可变实例/功能接口
有什么方法可以强制实例或功能接口静态方法输出以 Collections.immutable(x) 之类的方式不可变?
例如,我想为一些类似静态构建器的方法创建实例创建某种比较器功能接口,并禁止像“.thenComparing()”这样的链式操作。
java - Java 接口类似于 Predicate,但没有参数
我正在寻找一个预先存在的功能接口,例如Predicate
,但它的test
方法不带参数。