考虑以下代码:
public class Main {
private static Predicate<? extends TestObject> predicate = testObject -> true;
private static Predicate<? extends TestObject> predicate1 = testObject -> true;
public static void main( String[] args ) {
List<TestObject> objects = Lists.newArrayList( new TestObject(), new TestObject() );
objects.stream().filter( predicate.or( predicate1 ) ).findFirst();
}
}
它不编译,给出错误:
Error:(17, 48) java: incompatible types: java.util.function.Predicate<capture#1 of ? extends test.test.TestObject> cannot be converted to java.util.function.Predicate<? super capture#2 of ? extends test.test.TestObject>
似乎我们不能将这样的谓词与诸如“或”或“与”之类的逻辑运算符连接起来,但是为什么 Java 不能处理它们呢?
它使用简单的谓词(如 )进行编译Predicate<TestObject>,但不使用Predicate<? super TestObject>or 进行编译Predicate<? extends TestObject>。
胡说叔叔
aluckdog
白猪掌柜的
相关分类