Что такое heap pollution

«Что такое heap pollution» — вопрос из категории Java, который задают на 23% собеседований Android Разработчик. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

Heap pollution возникает, когда параметризованный тип содержит объекты несовместимого типа из-за unchecked-операций, обычно при работе с raw-типами или varargs. Это может привести к ClassCastException во время выполнения.

Пример:

List<String> strings = new ArrayList<>();
List rawList = strings;
rawList.add(1); // Heap pollution - добавили Integer в List<String>
String s = strings.get(0); // ClassCastException при runtime

Основные причины:

  1. Смешение generic и non-generic кода
  2. Использование varargs с generic-типами
  3. Непроверенные приведения типов

Для предотвращения:

  • Избегайте raw-типов
  • Используйте @SafeVarargs для вариативных generic-методов
  • Включайте предупреждения -Xlint:unchecked