问题标签 [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.
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.
java - 引用特定对象的实例方法
在下面的代码中,它在使用类名传递方法引用变量时有效,但是在使用用户对象传递引用变量时出现错误。
java - Objects::nonNull 和 x -> x != null 之间有什么区别吗?
考虑以下类:
第一个谓词是从方法引用创建的,另一个是 lambda 表达式。这些谓词具有相同的行为(nonNull
的主体是return obj != null;
)。lambda 短了两个字符(也许允许流管道放在一行上)。
除了代码风格,和之间有什么区别吗?换句话说,我应该更喜欢一个吗?Objects::nonNull
x -> x != null
lambda-dev 和 lambda-libs-spec-{observers,experts} 邮件列表消息中提到isNull
, nonNull
and isNotNull
(early name) 并没有解决这一点。(我很惊讶没有人质疑添加 Objects 方法,因为它们可以用 lambda 简单地替换,但另一方面,也是如此Integer::sum
。)
我还用javap
. 唯一的区别是传递给lambda 元工厂引导方法的方法句柄:
当然,元工厂可以在 JVM 的突发奇想下为方法引用和 lambda 做不同的事情,所以这并不能证明太多。
java - 如何将复制构造函数作为方法引用传递?
我有一个类PlanItemEditor。
我需要 E 项的复制构造函数。如何使用方法引用传递它?
我正在考虑包含一个一元函数作为参数,并从 E 类中传入一个方法,该方法正是一个复制构造函数,但具有不同的名称签名。然而,这有点骇人听闻。
有没有更好的方法来做到这一点?
java - 实例方法参考和 Lambda 参数
我无法理解方法引用的语法,其中有两个参数a
和b
,并且引用是对a
on的方法b
。
例如,我了解如何
相当于
因为在这种情况下,lambda 参数与方法调用参数匹配(o1, o2)
。
但是对于这个 lambda
我的 IDE 告诉我这相当于:
而且我没有找到替换该语法的规则:a.method(b)
使用方法参考。
例如,如果 lambda 有三个或更多参数怎么办?那合法吗?第一个参数是否成为方法目标,其余的成为参数?
java - Java 8 方法参考非静态方法
为什么这不起作用?我收到编译器错误“无法对非静态方法打印进行静态引用...”
java - 使用本地类时构造函数引用无效?
给定以下代码:
我的 IDE 没有给我任何错误。也就是说,直到我尝试构建项目并运行它。当我这样做时,它会给我一个编译器错误,如下所示:
现在,我认为,鉴于错误消息,如果 foo() 是静态的,则不会发生这种情况。非常正确,只有当 foo() 是一个实例方法时才会发生这种情况。只有当 LocalFoo 是实例方法中的本地类时,才会发生这种情况,并且只有在使用构造函数引用(即从不使用常规方法引用)时才会发生。
更重要的是,如果我将第 21 行更改为
编译器突然没有错误。
所以回顾一下。如果我尝试在实例方法中声明的本地类上使用构造函数引用,编译器会抱怨无法访问构造函数,对此我感到困惑。
如果有人可以阐明为什么会发生这种情况,将不胜感激。谢谢。
java - 使用方法引用
我有一个JButton
调用saveButton
并希望它在save
单击时调用该方法。当然,我们可以使用旧方法来做到这一点:
但是今天我想使用新的 Java 8 特性,比如方法引用。为什么
不行?它是如何使用方法引用完成的?
java - Java 8 构造函数方法参考
我正在阅读 Java 8 书,它附带了一个我复制的示例:
实施者:
来电者:
如果调用此方法,则将以下内容打印到输出中:
一切都很好,但是如果我使用方法引用而不是perform message
打印方法!为什么会这样,我错过了什么吗?
如果我使用此代码:
或者这段代码:
这是打印的:
不打印异常消息或其他任何内容。我正在使用 Java 8 1.8.25 64 位。
更新
对于像我一样正在学习的读者来说,这是正确的运行代码。
我创建了一个调用者类。
因为我需要实现一个空方法“从 Action 功能接口执行”,我需要将它作为参数传递给类构造函数MethodReference
,所以我引用了“MethodReferenceCall 的构造函数,它是一个空构造函数”,我可以使用它。
java - Java 8 方法引用静态 void 方法
有没有办法引用返回 void 的静态方法?
我试过这个
但它会说“返回类型错误,无法将 void 转换为 java.lang.Void”