Por que o Predicado <? super SomeClass> não aplicável a Object?
Suponha que tenhamos um predicado declarado comoPredicate<? super SomeClass>
. Eu esperaria ingenuamente que fosse aplicável a qualquer superclasse deSomeClass
hierarquia, incluindoObject
.
No entanto, esse predicado não é aplicável aObject
. Estou tendo o erro a seguir:
O teste do método (captura nº 3-de? Super SomeClass) no tipo Predicate não é aplicável aos argumentos (Object)
Demo.
Porque éPredicate<? super SomeClass>
não aplicável a uma instância deObject
?
O código:
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());
}
}