在 Java 8 中使用实例方法引用的 forEach 的限制
假设我有以下功能接口:
public interface TemperatureObserver {
void react(BigDecimal t);
}
然后在另一个类中,已经填充了类型为 的对象。假设这是一个,我可以在循环中使用以下命令调用:ArrayList
TemperatureObserver
temp
BigDecimal
react
observers.forEach(item -> item.react(temp));
我的问题:我可以对上面的代码使用方法参考吗?
以下情况不起作用:
observers.forEach(TemperatureObserver::react);
错误消息告诉我
-
forEach
中不适用类型Arraylist observers
TemperatureObserver::react
-
TemperatureObserver
不定义方法react(TemperatureObserver)
公平地说,正如预期的那样,作为参数a,我的接口虽然是功能性的,但由于(在我的情况下是a)的不同参数而不符合。forEach
Consumer<? super TemperatureObserver>
Consumer
react
BigDecimal
那么这可以解决吗,或者这是lambda没有相应方法参考的情况?