0 Pytanie: Czy jest to błąd kompilatora ogólnego typu Java? [duplikować]

pytanie utworzone w Wed, May 8, 2019 12:00 AM
    

To pytanie ma już odpowiedź tutaj:

    

Myślę o wnioskowaniu ograniczonym na stronie wywołania funkcji. W poniższym fragmencie otrzymuję błąd kompilacji dla pierwszego wywołania inferencji w głównej funkcji zgodnie z oczekiwaniami (String nie jest podtypem X, więc nie powinniśmy być w stanie wywnioskować tego typu), ale nie otrzymuję błędu kompilacji podczas wymiany klasa abstrakcyjna z interfejsem i robi to samo, chociaż wyraźnie String nie jest podtypem Y. Musi to być błąd kompilatora? (Próbowałem z 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 Answers                              0                         
źródło umieszczone tutaj