0 Вопрос: Это ошибка компилятора вывода обобщенного типа Java? [Дубликат]

вопрос создан в Wed, May 8, 2019 12:00 AM
    

На этот вопрос уже есть ответ здесь:

    

Я думаю об ограниченном выводе типа на сайте вызова функции. В следующем фрагменте я получаю ошибку компиляции для первого вызова логического вывода в основной функции, как и ожидалось (String не является подтипом X, поэтому мы не должны иметь возможность выводить этот тип), но я не получаю ошибку компиляции при замене абстрактный класс с интерфейсом и делает то же самое, хотя явно String не является подтипом Y. Это должна быть ошибка компилятора, верно? (Я пробовал с jdk 1.8.121 + 1.8.161).

public class Why
{
    static abstract class X
    {
    }

    static <Z extends X> Z infer1()
    {
        return null;
    }

    static interface Y
    {
    }

    static <Z extends Y> Z infer2()
    {
        return null;
    }

    public static void main(String[] args)
    {
        String x = infer1();
        String y = infer2();
    }
}
    
2
0 ответов                              0                         
источник размещен Вот