问题标签 [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 回答
100 浏览

java - 是否可以通过方法引用传递参数?

我有以下代码行:

并在其中一种方法中:

现在importProducts是没有参数的方法:

但是我现在需要为这个方法添加参数。

添加新参数后,行:

坏了。

有可能修复它吗?

0 投票
2 回答
856 浏览

java - Replace Lambdas with method reference.

Please help me to understand how to replace lambdas with method reference for the method below.

0 投票
3 回答
2755 浏览

java - 有没有办法像使用消费者一样简单地使用 BiConsumers?

这只是一个理论问题,没有具体应用。

我有以下方法,我不会碰。它可以(如果可能的话)用作BiConsumer.

如何as在保持b不变并使用this::doSmallThingin的同时进行迭代doBigThing

当然,以下不起作用。

以下效果很好,实际上是我每天使用的。

以下也很好用,但有点棘手。

但是所有这些解决方案都没有得到Consumer案例的简单性。那么有什么简单的存在BiConsumer吗?

0 投票
1 回答
108 浏览

java - 扩展其他不能的功能接口 - 不能为其分配构造函数引用 - 是编译器错误吗?

在下面的简单代码中,我可以看到“工厂”接口,它们之间的唯一区别是Factory0Bad扩展Supplier

所以这条线

被编译器(1.8.0u05)接受,但是这一行

不是。

为什么是这样?我在这里想念什么?它是javac中的错误吗?

0 投票
2 回答
6319 浏览

java - 用于指定对泛型方法的方法引用的语法

我在“Java - 初学者指南”中阅读了以下代码

以下陈述有效

关于上述代码的解释,提出了两点

1 - 当泛型方法被指定为方法引用时,其类型参数::位于方法名称之后和之前。

2 - 在指定泛型类的情况下,类型参数在类名之后并在::.

我的查询:-

上面的代码是第一个引用点的例子

有人可以为我提供一个实现第二个引用点的代码示例吗?

(基本上我不明白引用的第二点)。

0 投票
1 回答
107 浏览

java - 实例方法的两种方法引用的区别

我的查询

在上面的代码中,Statement 1产生了两个编译时错误

1-找不到方法myGenMeth(Integer, Integer)

2-myGenMeth(T, T)不能从静态上下文中引用非静态方法

其中,Statement 2显示没有错误。

1-有什么区别??Statement 1Statement 2

2-如何Statement 2正常工作。

(我不是在问为什么Statement 1会产生错误)。

0 投票
3 回答
4862 浏览

java - 多个 lambda 方法引用

可以像这样链接/连接对 lambda 表达式中的元素所做的操作:

有没有办法通过方法引用来做到这一点?像这样的东西:

我知道我可以在四个单独的调用中做到这一点(这也做更多,那就是改变值):

我什至不能做这样简单的事情:

0 投票
0 回答
92 浏览

java - Java 8 中静态初始化块中的 this::methodReference 或等效项

只是好奇:我有以下代码:

有没有办法在指示的行上避免列出当前类?该方法是与静态初始化程序块相同的类中的静态方法。我意识到我做不到,this::isGoogleHTTP5XXError因为还没有实例,但似乎最好有这样的东西::isGoogleHTTP5XXError来推断我当前的课程,而不必把它拼出来。这存在吗?

0 投票
1 回答
80878 浏览

java - 使用 Java 8 流时的新对象实例化

除了后者的可读性稍好之外,使用以下构造是否有区别?

0 投票
1 回答
2457 浏览

java - lambda / 方法引用和泛型的“不兼容类型”编译器错误

我在处理一些旧代码时偶然发现了一个问题,用 lambda 表达式或方法引用替换了几个匿名类。这个问题有点难以用语言来解释,但我会尽力而为,我还在下面添加了一个简短的例子来说明我的问题。

我的示例包括...

  1. 一个功能接口GenericListener,它接受一个类型参数 V并有一个方法“genericCallback(V genericValue)”。

  2. 一个类CallbackProducer,它接受一个类型参数 T。这个类还有一个方法来添加一个 Integer 类型的 GenericListener。

  3. 一个Main类,它创建 CallbackProducers 并向它们添加 GenericListeners。

当我从 Main 的构造函数运行 CallbackProducer 的 addIntegerListener 方法时,每当我避免指定 CallbackProducer 的 T 的类型时,我都会收到编译器错误:“不兼容的类型” 。

addIntegerListener 方法只使用了 GenericListener 的 V。据我所知,它并没有以任何方式使用 CallbackProducer 的 T。

我在 Main 的构造函数中对 addIntegerListener + 注释进行了多次调用,其中 3 次导致编译器错误。但据我所知(根据 IntelliJ),所有这些都应该是合法的。如果您注释掉对 addIntegerListener 的 3 个第一次调用,则应用程序将编译并运行得很好。

此外,如果 CallbackProducer 不使用泛型,并且我们完全删除了类型参数 T,则对 addIntegerListener 的 3 次第一次调用将编译。

这种行为有原因吗?我是不是误解了什么,或者这是java编译器中的一个弱点或错误?(我目前正在使用 java 1.8_51)

提前感谢您的澄清!

这是一个缩短的版本,没有所有的评论混乱,只有两次调用“addIntegerListener”,其中一次导致编译器错误。