Приведение Java: неправильный компилятор, неправильная спецификация языка, или я ошибаюсь?

Я читал Спецификацию языка Java, 3-е издание, и обнаружили, что я считаю несоответствием между спецификацией и реализацией компилятора javac. Такие же расхождения существуют в компиляторе Eclipse.

Раздел 15.16 говорит о выражениях приведения. В нем говорится, что это должна быть ошибка времени компиляции, если тип аргумента не может быть преобразован в тип приведения через преобразование приведения (раздел 5.5):

Это ошибка времени компиляции, если тип времени компиляции операнда никогда не может быть приведенным к типу, указанному оператором приведения в соответствии с правилами преобразования приведения (§5.5). В противном случае во время выполнения значение операнда преобразуется (при необходимости) путем преобразования преобразования в тип, указанный оператором преобразования.

В разделе 5.5 говорится о преобразовании преобразования. Он дает список разрешенных типов преобразования. В частности, в списке отсутствует "

Может ли кто-нибудь просветить меня?

Изменить: после того, как я спросил об этом, я отправил отчет об ошибке в Oracle. Они ответили, что это «сбой в JLS».

20
задан Paŭlo Ebermann 18 October 2011 в 16:06
поделиться