, но не наоборот.

оложим, у нас есть предикат, объявленный как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());
    }
}

Ответы на вопрос(1)

Ваш ответ на вопрос