Ответ
Generics (обобщения) в Java позволяют создавать классы, интерфейсы и методы, которые работают с параметризованными типами. Это обеспечивает безопасность типов на этапе компиляции и устраняет необходимость явного приведения типов.
Пример обобщенного класса Box:
public class Box<T> {
private T content;
public void setContent(T content) {
this.content = content;
}
public T getContent() {
return content;
}
}
Использование:
// Создание Box для String
Box<String> stringBox = new Box<>();
stringBox.setContent("Hello");
String value = stringBox.getContent(); // Тип String гарантирован, приведение не нужно
// Создание Box для Integer
Box<Integer> intBox = new Box<>();
intBox.setContent(123);
int num = intBox.getContent(); // Авто-распаковка из Integer в int
Ключевые преимущества:
- Типобезопасность: Компилятор проверяет соответствие типов, предотвращая
ClassCastException. - Устранение приведения типов: Код становится чище и безопаснее.
- Повторное использование: Один обобщенный алгоритм или структура данных может работать с разными типами.
Generics также поддерживают ограничения (<T extends Number>) и несколько параметров (<K, V>).