小编Tem*_*ist的帖子

Java 8中实例方法引用的forEach限制

假设我有以下功能界面:

public interface TemperatureObserver {
    void react(BigDecimal t);
}
Run Code Online (Sandbox Code Playgroud)

然后在另一个类中已经填充ArrayList了类型的对象TemperatureObserver.假设temp是a BigDecimal,我可以react使用以下命令在循环中调用:

observers.forEach(item -> item.react(temp));
Run Code Online (Sandbox Code Playgroud)

我的问题:我可以使用上面代码的方法参考吗?

以下不起作用:

observers.forEach(TemperatureObserver::react);
Run Code Online (Sandbox Code Playgroud)

错误消息告诉我

  1. forEach在Arraylist observers该类型中不适用TemperatureObserver::react
  2. TemperatureObserver 没有定义方法 react(TemperatureObserver)

很公平,正如forEach预期的那样,作为一个参数a Consumer<? super TemperatureObserver>,我的界面尽管是功能性的,但Consumer由于react(BigDecimal在我的情况下)的不同参数而不符合.

那么这可以解决,还是一个lambda没有相应的方法参考的情况?

java foreach java-8 method-reference

20
推荐指数
3
解决办法
5392
查看次数

标签 统计

foreach ×1

java ×1

java-8 ×1

method-reference ×1