Дженерики в Java (2004) изменили всё.
Типобезопасность + гибкость.
Сначала вызывали сомнения, теперь — основа коллекций и API.
// До дженериков: отсутствие типобезопасности
// С дженериками: типобезопасно и понятно
// Пример из реального API: Optional<T>
👉 Java Portal
Типобезопасность + гибкость.
Сначала вызывали сомнения, теперь — основа коллекций и API.
import java.util.*;
public class GenericsEvolutionDemo {
// До дженериков: отсутствие типобезопасности
static void withoutGenerics() {
System.out.println("=== Без дженериков ===");
List list = new ArrayList(); // необобщённый тип (raw type)
list.add("Ayush");
list.add(42); // Ошибка не возникает на этапе компиляции
for (Object obj : list) {
try {
String name = (String) obj; // Исключение ClassCastException во время выполнения
System.out.println(name);
} catch (ClassCastException e) {
System.out.println("Поймана ошибка: " + e);
}
}
}
// С дженериками: типобезопасно и понятно
static void withGenerics() {
System.out.println("\n=== С дженериками ===");
List<String> list = new ArrayList<>();
list.add("Ayush");
// list.add(42); // Раскомментировать эту строку вызовет ошибку компиляции
for (String name : list) {
System.out.println(name.toUpperCase());
}
}
// Пример из реального API: Optional<T>
static void optionalExample() {
System.out.println("\n=== Пример Optional<T> ===");
Optional<String> maybeName = Optional.of("Ayush");
maybeName.ifPresent(name -> System.out.println("Hello, " + name));
}
public static void main(String[] args) {
withoutGenerics();
withGenerics();
optionalExample();
}
}
Please open Telegram to view this post
VIEW IN TELEGRAM
This media is not supported in your browser
VIEW IN TELEGRAM
Указание типа после ключевого слова
Об этом и многом другом — в видео
👉 Java Portal
new
— это действительно допустимая конструкция в Java.Об этом и многом другом — в видео
Please open Telegram to view this post
VIEW IN TELEGRAM