先将资源标识符解析并组装为 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 年 3 月)
工作原理
URL 构造函数在 JDK 20 中被弃用,因为 URL 的解析和相等性判断涉及协议处理器,行为可能出人意料。URI 是解析、组装、比较和规范化时首选的不可变表示;仅在 API 要求 URL 时才进行转换。
相关文档
证明