问题标签 [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.

0 投票
1 回答
530 浏览

lambda - Method reference to anonymous class constructor

Is it possible to get a reference to the constructor of an anonymous class?

For example:

could be used as:

or

In the second case I used a lambda expression but I want a function reference.

0 投票
6 回答
2475 浏览

java - 引用特定对象的实例方法

在下面的代码中,它在使用类名传递方法引用变量时有效,但是在使用用户对象传递引用变量时出现错误。

0 投票
1 回答
14501 浏览

java - Objects::nonNull 和 x -> x != null 之间有什么区别吗?

考虑以下类:

第一个谓词是从方法引用创建的,另一个是 lambda 表达式。这些谓词具有相同的行为(nonNull的主体是return obj != null;)。lambda 短了两个字符(也许允许流管道放在一行上)。

除了代码风格,之间有什么区别吗?换句话说,我应该更喜欢一个吗?Objects::nonNullx -> x != null

lambda-dev 和 lambda-libs-spec-{observers,experts} 邮件列表消息中提到isNull, nonNulland isNotNull(early name) 并没有解决这一点。(我很惊讶没有人质疑添加 Objects 方法,因为它们可以用 lambda 简单地替换,但另一方面,也是如此Integer::sum。)

我还用javap. 唯一的区别是传递给lambda 元工厂引导方法的方法句柄:

当然,元工厂可以在 JVM 的突发奇想下为方法引用和 lambda 做不同的事情,所以这并不能证明太多。

0 投票
1 回答
378 浏览

java - 如何将复制构造函数作为方法引用传递?

我有一个类PlanItemEditor。

我需要 E 项的复制构造函数。如何使用方法引用传递它?

我正在考虑包含一个一元函数作为参数,并从 E 类中传入一个方法,该方法正是一个复制构造函数,但具有不同的名称签名。然而,这有点骇人听闻。

有没有更好的方法来做到这一点?

0 投票
2 回答
726 浏览

java - 实例方法参考和 Lambda 参数

我无法理解方法引用的语法,其中有两个参数ab,并且引用是对aon的方法b

例如,我了解如何

相当于

因为在这种情况下,lambda 参数与方法调用参数匹配(o1, o2)

但是对于这个 lambda

我的 IDE 告诉我这相当于:

而且我没有找到替换该语法的规则:a.method(b)使用方法参考。

例如,如果 lambda 有三个或更多参数怎么办?那合法吗?第一个参数是否成为方法目标,其余的成为参数?

0 投票
6 回答
22894 浏览

java - Java 8 方法参考非静态方法

为什么这不起作用?我收到编译器错误“无法对非静态方法打印进行静态引用...”

0 投票
2 回答
2845 浏览

java - 使用本地类时构造函数引用无效?

给定以下代码:

我的 IDE 没有给我任何错误。也就是说,直到我尝试构建项目并运行它。当我这样做时,它会给我一个编译器错误,如下所示:

现在,我认为,鉴于错误消息,如果 foo() 是静态的,则不会发生这种情况。非常正确,只有当 foo() 是一个实例方法时才会发生这种情况。只有当 LocalFoo 是实例方法中的本地类时,才会发生这种情况,并且只有在使用构造函数引用(即从不使用常规方法引用)时才会发生。

更重要的是,如果我将第 21 行更改为

编译器突然没有错误。

所以回顾一下。如果我尝试在实例方法中声明的本地类上使用构造函数引用,编译器会抱怨无法访问构造函数,对此我感到困惑。

如果有人可以阐明为什么会发生这种情况,将不胜感激。谢谢。

0 投票
2 回答
1146 浏览

java - 使用方法引用

我有一个JButton调用saveButton并希望它在save单击时调用该方法。当然,我们可以使用旧方法来做到这一点:

但是今天我想使用新的 Java 8 特性,比如方法引用。为什么

不行?它是如何使用方法引用完成的?

0 投票
1 回答
9499 浏览

java - Java 8 构造函数方法参考

我正在阅读 Java 8 书,它附带了一个我复制的示例:

实施者:

来电者:

如果调用此方法,则将以下内容打印到输出中:

一切都很好,但是如果我使用方法引用而不是perform message打印方法!为什么会这样,我错过了什么吗?

如果我使用此代码:

或者这段代码:

这是打印的:

不打印异常消息或其他任何内容。我正在使用 Java 8 1.8.25 64 位。

更新

对于像我一样正在学习的读者来说,这是正确的运行代码。

我创建了一个调用者类。

因为我需要实现一个空方法“从 Action 功能接口执行”,我需要将它作为参数传递给类构造函数MethodReference,所以我引用了“MethodReferenceCall 的构造函数,它是一个空构造函数”,我可以使用它。

0 投票
1 回答
2645 浏览

java - Java 8 方法引用静态 void 方法

有没有办法引用返回 void 的静态方法?

我试过这个

但它会说“返回类型错误,无法将 void 转换为 java.lang.Void”