【发布时间】:2014-08-20 21:38:33
【问题描述】:
以下代码块在 1.8.11 中编译得很好,但在 1.8.20 中抛出错误
private static String calculateSyntheticOrderTypePrice(
FluentIterable<? extends CalculatorProvider> pendingProviders )
{
FluentIterable <? extends CalculatorProvider> mlsLegProvidersAll = pendingProviders.filter(Predicates.and(
IS_MLS_PROVIDER, Predicates.not(IS_SYNTHETIC)));
FluentIterable <? extends CalculatorProvider> mlsLegProvidersNewest = reduceToNewestMlsPrices(mlsLegProvidersAll);
FluentIterable <? extends CalculatorProvider> otherLegProviderAll = pendingProviders.filter(Predicates.and(
Predicates.not(IS_MLS_PROVIDER), Predicates.not(IS_SYNTHETIC)));
FluentIterable <String> mlsHeadPriceTypes = mlsLegProvidersNewest.transform(TO_MLS_SPREAD_PRICE_FUN); /* MLS head: spread price */
FluentIterable <String> orderPriceTypes = otherLegProviderAll.transform(TO_ORDER_TYPE_PRICE_FUN); /* non-MLS orders: option spread or pairs */
FluentIterable <String> formattedOrderHeadPriceTypes = orderPriceTypes.transform(new FormatOrderTypePriceFun(creditOrDebit(otherLegProviderAll)));
FluentIterable <String> allFormatted = FluentIterable.from(Iterables.concat(mlsHeadPriceTypes, formattedOrderHeadPriceTypes));
return CalculatorValues.rollupStrings(allFormatted);
}
我得到的错误是 java:not suitable method found for filter (com.google.common.base.Predicate)
更新 8 和 20 之间的更改是否会影响此代码?我在两种情况下都使用相同版本的番石榴 17.0(最新稳定版),唯一的变化是 Java 中的更新版本。
非常感谢任何帮助。
编辑
显示错误的行是
FluentIterable <? extends CalculatorProvider> mlsLegProvidersAll = pendingProviders.filter(Predicates.and(
IS_MLS_PROVIDER, Predicates.not(IS_SYNTHETIC)));
【问题讨论】:
-
你能把你的代码缩短到重现错误所需的最小部分吗?
-
现在请发布完整和准确的错误信息。
-
如果有
IS_SYNTHETIC和IS_MLS_PROVIDER的声明就好了。