I/O 中级

从已弃用的 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
难度
中级
从已弃用的 URL 构造函数迁移到 URI
可用

URL 构造函数自 JDK 20 起弃用(2023 年 3 月)

URL 构造函数在 JDK 20 中被弃用,因为 URL 的解析和相等性判断涉及协议处理器,行为可能出人意料。URI 是解析、组装、比较和规范化时首选的不可变表示;仅在 API 要求 URL 时才进行转换。