При чтении из коллекции с параметризацией «неизвестный супертип Integer» какой статический тип получает элемент и почему?
База Hintsage
Generics
Параметризация типов, bounds, wildcards и стирание типов.
Практика
Вопросы: Generics
В практическом API нужно вернуть объект типа T после проверки значения во время выполнения. Какую роль здесь играет Class<T>?
Что препятствует обобщённому коду создать экземпляр параметра типа через обычный конструктор?
Разберите ограничение: почему wildcard в Java не может одновременно иметь верхнюю и нижнюю границу?
При проектировании класса, реализующего один и тот же обобщённый интерфейс с двумя разными аргументами типа, объясните запрет такой конструкции в Java.
Что мешает Java использовать примитивный тип в качестве аргумента параметра типа?
Представьте, что нужно описать конечный набор типизированных значений. Почему Java не разрешает объявлять обобщённый enum?
В API метод должен перемещать элементы между двумя коллекциями согласованного типа. Почему два независимых wildcard не выражают это требование, а общий параметр типа выражает?
Поясните асимметрию совместимости wildcard-параметризаций: почему коллекция Integer совместима с ожиданием коллекции неизвестного подтипа Number, но коллекция с неизвестным подтипом Number не совместима с ожиданием коллекции Integer?
Как трактуется параметр типа метода, если он носит то же имя, что и параметр окружающего обобщённого класса?
Что именно о параметризации обобщённого типа можно узнать через reflection после стирания типов, а что недоступно во время выполнения?
В каком случае рекурсивная верхняя граница параметра типа позволяет обобщённому API сохранить конкретный тип наследника при цепочке вызовов?
Разберите, почему компилятор отвергает точное описание типа коллекции через Class, хотя объект создан с параметром String:
import java.util.ArrayList;
class Demo {
static Class<?> runtimeType = new ArrayList<String>().getClass();
static Class<ArrayList<String>> preciseType = new ArrayList<String>().getClass();
}
Объясните механизм захвата wildcard, благодаря которому метод может безопасно переставлять элементы коллекции с неизвестным параметром типа.
За счёт чего целевой тип присваивания может влиять на вывод параметра типа обобщённого метода?
Как верхняя граница параметра типа влияет на его стирание и доступные операции внутри обобщённого кода?
Представьте параметр типа с несколькими верхними границами: почему граница-класс должна указываться первой?
Каким образом компилятор сохраняет переопределение обобщённого метода после стирания типов?
Объясните ограничение: почему статический член обобщённого класса не может напрямую использовать параметр типа этого класса?
В сравнении с наследованием самих типов почему параметризация Java остаётся инвариантной, даже когда один аргумент типа является подтипом другого?
Показано 21–40 из 50