问题标签 [method-reference]
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 - 如何获取类中所有方法的方法参考(Java)?
Java 8 中特定方法的方法参考可以通过Class::Method
. 但是如何获取一个类的所有方法的方法引用呢?
所有所需的方法都具有不同的方法名称,但具有相同的类型签名。此外,这些方法的名称事先是未知的。
例子:
对已知方法的方法引用op0
可以得到如下:
但是,如何获取类中所有方法的方法引用呢?
functional-programming - java 8中构造函数引用的用途是什么
我正在阅读有关 Java 8 特性的信息,这导致我阅读了这篇文章,我想知道构造函数引用的实际用途,我的意思是为什么不直接使用new Obj
?
PS,我试过谷歌搜索,但我找不到有意义的东西,如果有人有代码示例、链接或 tut 会很棒
java - 引用构造函数的目的:Java 8
在其中我遇到了一个关于各种方法参考的表格,在最后一个中有 4 个
您可以使用名称 new 以与静态方法相同的方式引用构造函数。
我无法理解对构造函数的引用到底是做什么的?
注意:我知道 Java 文档是不言自明的,但在这种情况下,我无法理解它究竟想要传达什么。
java - 同步表达式中的方法引用
对不起,伙计们,但我不明白,在哪个对象是synchronized
块内部sync()
方法是同步的:
如果在方法引用对象上,为什么我不能只写:
synchronized (TestLambda::new)
?(这将是编译时错误)。
有任何想法吗?
UPD:以防万一:它确实是同步的
UPD-2:对于那些怀疑的人,简单的例子:
java - Java 8 数组构造函数引用如何工作?
假设我们有一个IntFunction
返回整数数组的类型变量:
使用 Java 8 泛型,可以使用如下构造函数引用来初始化此变量:
Java 编译器如何将其转换为字节码?
我知道对于其他类型,比如String::new
,它可以使用invokedynamic
指向 String 构造函数的指令java/lang/String.<init>(...)
,这只是一个具有特殊含义的方法。
看到有构造数组的特殊说明,这如何与数组一起工作?
java - 如何通过反射获取方法引用?
假设我有一些函数接口,如 Function 和不同类的一些方法,我可以为其获取方法引用,例如:
如何通过反射从 A 类中获取所有可能的方法引用转换为 Function 接口的实例?
更新:
到目前为止,这个问题与评论中提到的任何问题都没有重复,但由于Holger在他的评论中提到的两个问题,我已经设法做我需要的事情:
java - Java Lambda 表达式
我目前正在 JDK 1.8 上学习 lambda 表达式。我遇到了一些我发现我不明白的代码。
这是代码:
comp.compare("5", "3")
最终执行"5".compareTo("2")
。我的理解是编译器需要找到一个与签名相同的静态方法
我已经创建了这样的方法并且它有效。我不明白为什么 java 编译器调用"5".compareTo("2")
. 他们的方法符号不一样。
关于编译器为什么生成这种代码的任何信息?
java - 使用带参数的方法引用
我刚开始学习 Java 流并遇到了一个问题。请看以下示例。这是 Node 类的一部分:
我的意图是使用流中每个节点上的名称和结果参数调用#findChildren。我尝试使用引用 Node::findChildren 的方法,但没有成功。我很欣赏其他带有->
操作员的解决方案。
是否可以将方法引用与参数一起使用?我喜欢流的想法,我只是想让代码更具可读性。
实际上,我认为有一个类似的问题Method references with a parameter我读过但无法弄清楚如何在我的代码中使用 bind2 方法。它是唯一的解决方案吗?
java - 如何在 java 8 lambda 中获取 FunctionalInterface 方法信息
我想测试两个 lambda 方法是否相等;例如:
输出:
我的目标是验证这两个 lambda 函数是相同的方法。
即有一个返回true 的测试。
这样,我可以从FunctionalInterface获取方法信息吗?
谢谢
java - Java 8 中的方法引用是否具有具体类型,如果有,它是什么?
这个问题与另一个问题密切相关。但是,我觉得对该问题的公认答案并不那么确定。
那么,Java 8 中方法引用的类型是什么?下面是如何将方法引用“转换”(提升?)到 a 中的一个小演示java.util.function.Function
:
那么,是否有一种不那么痛苦(更直接)的方式将方法引用转换为可以传递的编译/具体类型?