Mediumgenerics
Что такое Generics в Java?
1Постановка
Разберём, что от вас хотят в этом вопросе и как к нему подступиться на собеседовании.
2Решение
Generics (Java 5) — параметризация типов: List<String>. Дают type safety на этапе компиляции и избавляют от явных кастов. Реализованы через type erasure: в runtime тип стирается.
List<String> list = new ArrayList<>();
list.add("abc");
// list.add(123); // ошибка компиляции
String s = list.get(0); // без (String) cast
// Bounds
public static <T extends Comparable<T>> T max(T a, T b) {
return a.compareTo(b) >= 0 ? a : b;
}Wildcards: List<?> (любой), List<? extends Number> (ковариантность — читать), List<? super Number> (контравариантность — писать). Правило PECS: Producer Extends, Consumer Super.
3Как отвечать
- Сначала уточните условия и ограничения, покажите аналитическое мышление.
- Рассуждайте вслух — интервьюеру важен ход мысли, а не только финальный ответ.
- Оцените сложность по времени и памяти (Big-O), если это алгоритмический вопрос.
💡
На реальном собеседовании Alffert подскажет развёрнутый ответ в реальном времени.