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 подскажет развёрнутый ответ в реальном времени.