Java Разрешенное сужение эталонного преобразования - PullRequest
2 голосов
/ 17 марта 2020

Я ссылаюсь на раздел 5.1.6.1 JLS (https://docs.oracle.com/javase/specs/jls/se13/jls13.pdf).

В точке 2 говорится, что «Если существует параметризованный тип X, который является супертипом T и параметризованного типа Y, который является супертипом S, так что стирание X и Y одинаково, тогда X и Y не доказуемо различимы ".

Теперь давайте предположим, что T := List<Object>, S := List<String>, и мы пишем T = S;, что дает ошибку компиляции. Но это не соответствует вышеупомянутой цитате. Если мы выберем X := List<?>, который является параметризованным типом и супертипом List<Object>, и мы выберем Y := List<?>, то стирание X и Y будет одинаковым (List).

Где я неправильно понимаю правило?

...