方法引用调用错误的方法

时间:2017-07-13 22:12:04

标签: java android android-jack-and-jill

我正在编写Android应用并使用net.sourceforge.streamsupport:streamsupport:1.5.5 我使用嵌入式JDK的Android Studio 2.3.3,源和目标兼容性设置为1.8。

现在我有一个方法引用Light::getColor,在调用时会调用错误的方法(Light::getColorTemperature)。

return StreamSupport.stream(lights)
    .filter(light -> light.getColorMode().ordinal() >= ColorMode.HUE_SATURATION.ordinal()
    .findFirst()
    .map(Light::getColor)
    .orElse(Color.WHITE);

调试时看到: Debugger shows wrong method call

如果我使用lambda表达式(light -> light.getColor()),则调用正确的方法:

return StreamSupport.stream(lights)
    .filter(light -> light.getColorMode().ordinal() >= ColorMode.HUE_SATURATION.ordinal()
    .findFirst()
    .map(light -> light.getColor())
    .orElse(Color.WHITE);

调试时看到: Debugger shows correct method call

重新编译整个项目并没有改变任何事情。有没有人见过这个?我不确定这是一个流支持问题还是Android编译器问题,以及如何弄清楚。

0 个答案:

没有答案