4

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

现在我有一个方法引用Light::getColor,当被调用时,它调用了错误的方法 ( Light::getMaxColorTemperature)。

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

如调试时所见: 调试器显示错误的方法调用

如果我使用 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);

如调试时所见: 调试器显示正确的方法调用

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

4

0 回答 0