问题标签 [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 - 方法引用转换如何工作?
两者都是具有相同签名的实例方法。为什么一个有效而另一个无效?
签名String::toUpperCase
:String toUpperCase();
java - 对数组 clone() 的方法引用导致 NoClassDefFoundError: Array
当我运行这段代码
它按预期工作,我得到了输出
但是,如果我用方法引用替换 lambdaclone()
我得到一个运行时异常:
我完全不明白这一点。我会认为方法引用和 lambda 是等价的。此外,这似乎是一个非常奇怪的例外。谁能解释一下?
我正在使用 JDK 1.8.0_25。
java - 具有静态成员的非静态访问的 Java 8 类型推断
考虑以下代码:
前几天我无意中以非静态方式调用静态方法时遇到了这个问题。我知道您不应该以非静态方式调用静态方法,但我仍然想知道,为什么在这种情况下无法推断类型?
java - 在 Java 流中拆分对象
我想知道是否可以在 Stream 中拆分对象。例如,为此Employee
:
我想在流中执行一些操作。为简单起见,让它变成这样(假设我的代码架构不允许将它放在 Employee 类中 - 否则太容易了):
现在看起来像这样:
问题是,是否可以将一些代码放入这样的流中?
我想达到什么目的?- 我想如果我可以映射一些对象字段,然后像.forEach(this::someOperationWithEmployee)
代码可读性一样处理它们,会稍微提高一些。
2015 年 5 月 14 日更新
毫无疑问,在这种情况下将Employee
对象传递给someOperationWithEmployee
是最漂亮的解决方案,但有时我们在现实生活中无法做到这一点,应该是 lambdas 的通用解决方案。
java - 为什么必须为方法引用显式指定类/对象名称?
当我想引用当前范围内的方法时,我仍然需要指定类名(用于静态方法)或操作符this
之前::
。例如,我需要写:
对 来说这不是什么大问题this
,但有时静态方法看起来过于拥挤,因为类名可能很长。如果编译器允许我简单地编写,那就太好了::trimmedLength
:
但是 Java-8 编译器不允许这样做。对我来说,如果类/对象名称的解析方式与普通方法调用的解析方式相同,这似乎是非常一致的。这也将支持方法引用的静态导入,这在某些情况下也很有用。
所以问题是为什么 Java 8 没有实现这样或类似的语法?这种语法会出现什么问题吗?还是根本没有考虑过?
java - 方法引用和链式谓词
我正在尝试使用方法引用来压缩我的代码。这是我正在尝试改进的一条线:
使用方法参考可能会更好:
但是我可以在谓词中添加“false”吗?
java - Java 方法引用具有泛型参数的方法
我正在尝试对具有在类声明中指定的泛型参数的方法进行方法引用。所以我有:
具体来说,我不知道这里可执行文件的具体泛型类型。使用
立即解决问题,但对于这种情况是不可能的。
显然,我做错了什么。但是如何让它发挥作用呢?
谢谢。
java - 如何从 LambdaMetafactory 解决“AbstractMethodError”
我AbstractMethodError
从调用由调用定义的方法中得到一个LambdaMetafactory#metafactory()
。我无法弄清楚我做错了什么导致它。我查看了很多LambdaMetafactory#metafactory()
在线使用的示例,但没有找到与我正在尝试做的完全匹配的任何示例。
这是运行附加代码的[整个]输出:
我要做的是创建一个具有单个字段的类,该字段可以直接分配一个 lambda,或者通过查找类名和方法名来分配。双重性的原因是抽象出指定被调用方法的方式(直接在代码中指定,或在配置文件中指定)。
附加代码定义了一个功能接口,该接口ListMaker
具有一个从对象的字符串表示生成单元素列表的方法。它包含一个listify
实现与接口方法签名匹配的函数的静态方法,并将用于示例的直接设置方法部分。
这是代码:
我已经能够理解我在网上找到的类似示例,但它们都是最终结果;我无法找到任何足以描述最终结果的内容(至少对我而言),以帮助我找出我做错了什么。
java - Java 构造函数引用赋值与新创建的对象赋值
我在我们的项目中遇到了以下代码:
有区别吗
懒惰的?
collections - 确保按元素中的字段排序的元素列表
使用Guava可以通过这种方式确保升序:
对我来说很奇怪 Guava(尽管它与 Java lambdas 密切相关)并没有为这种情况提供简单的解决方案。当然,我可以编写一些帮助方法并将其包装起来,但也许有人已经在库中完成了。有最简单的方法吗?就像是: