От устаревших конструкторов URL к URI
Разбирайте и составляйте идентификаторы ресурсов как значения URI, преобразуя их в URL только при необходимости.
Сравнение кода
✕ Deprecated URL constructor
URL endpoint =
new URL("https://example.com/api?q=java");
✓ Java 20+
URI endpointUri =
URI.create("https://example.com/api?q=java");
URL endpoint = endpointUri.toURL();
Заметили проблему в этом коде? Сообщите нам.
Почему современный подход лучше
Без устаревшего API
Исключает использование устаревших конструкторов URL.
Предсказуемая семантика
Сравнение URI не выполняет разрешение, зависящее от сети.
Удобное составление
URI предназначен для разбора идентификаторов и работы с ними.
Старый подход
Прямое создание URL
Современный подход
Сначала URI, затем URL
Начиная с JDK
20
Сложность
Средний
Поддержка JDK
От устаревших конструкторов URL к URI
Доступно
Конструкторы URL объявлены устаревшими начиная с JDK 20 (март 2023)
Как это работает
Конструкторы URL были объявлены устаревшими в JDK 20, поскольку разбор и проверка равенства URL связаны с неожиданным поведением обработчиков протоколов. URI — предпочтительное неизменяемое представление для разбора, составления, сравнения и нормализации; преобразуйте его только при вызове API, которым требуется URL.
Связанная документация
Доказательство