<Integer>在
isEqual方法调用之前添加应该有帮助:
Predicate<Integer> predicate = Predicate.<Integer>isEqual(0).or(Predicate.isEqual(1));
出现这种编译器行为的原因:
isEqual
是一个静态的泛型方法,它会返回Predicate<T>
(无论其输入参数的实际类型是什么),因此Predicate<Object>
在调用该方法时会返回而无需显式指定返回类型。or
也是静态的泛型方法,但它返回由相同类型参数化的谓词作为其输入参数(即Predicate<Object>
)。



