, но не наоборот.
оложим, у нас есть предикат, объявленный какPredicate<? super SomeClass>
, Я бы наивно ожидал, что это будет применимо к любому суперклассуSomeClass
вверх по иерархии, в том числеObject
.
Однако этот предикат не применим кObject
, Я получаю следующую ошибку:
Метод test (capture # 3-of? Super SomeClass) в типе Predicate не применим для аргументов (Object)
ПочемуPredicate<? super SomeClass>
не относится к случаюObject
?
Код:
import java.util.*;
import java.lang.*;
import java.io.*;
import java.net.URL;
import java.util.function.Predicate;
/* Name of the class has to be "Main" only if the class is public. */
class Ideone
{
public static void main (String[] args) throws java.lang.Exception
{
Predicate<? super URL> p = u -> u.getFile().isEmpty();
p.test(new Object());
}
}