¿Por qué es Predicate <? super SomeClass> no aplicable a Object?
Supongamos que tenemos un predicado declarado comoPredicate<? super SomeClass>
. Ingenuamente esperaría que sea aplicable a cualquier superclase deSomeClass
arriba de la jerarquía, incluyendoObject
.
Sin embargo, este predicado no es aplicable aObject
. Obtuve el siguiente error
La prueba del método (captura # 3-de? Super SomeClass) en el tipo Predicate no es aplicable para los argumentos (Object)
Por que esPredicate<? super SomeClass>
no aplicable a una instancia deObject
?
El 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());
}
}