- PVSM.RU - https://www.pvsm.ru -

Будни программиста или редкий случай ошибки в компиляторе — 2

Привет. Продолжаем сталкиваться с ошибками компилятора и его расхождением с поведением штатных анализаторов IDE. Имеем следующий код:

public class X {
    public static <T> T getValue(String key) {
        return t1;
    }

    public void testGenerics(String key) {
        int i = getValue(key);
    }
}

Вопрос: компилируется ли код?

Ответ: должен, но не будет.

Фишка в том, в компиляторе баг: при выведении типов не работает autounboxing, и это печально. Баг поправили, но только в Java 7. Пруф [1].

P.S. Смех опять же в том, что та же популярная IDE из предыдущего поста ошибку не показывает. Эх…
P.P.S. текст ошибки: Ошибка будет следующей:

type parameters of T cannot be determined; no unique maximal instance exists for type variable T with upper bounds int,java.lang.Object

Автор: dzigoro

Источник [2]


Сайт-источник PVSM.RU: https://www.pvsm.ru

Путь до страницы источника: https://www.pvsm.ru/java/19358

Ссылки в тексте:

[1] Пруф: http://bugs.sun.com/view_bug.do?bug_id=6785114

[2] Источник: http://habrahabr.ru/post/157679/