使用java.net.URL在java中构造错误的URL?

Geo*_*rge 2 java url construction java-8

使用oracle java 1.8.0_25

我有以下结构

URL url = new URL(new URL(new URL("http://localhost:4567/"), "123"), "asd")
Run Code Online (Sandbox Code Playgroud)

根据https://docs.oracle.com/javase/tutorial/networking/urls/creatingUrls.html中的文档,
它应该生成http://localhost:4567/123/asd
但是它产生的URLhttp://localhost:4567/asd

文件说明

此代码段使用URL构造函数,该构造函数允许您从另一个URL对象(基础)和相对URL规范创建URL对象.这个构造函数的一般形式是:

URL(URL baseURL, String relativeURL)
第一个参数是一个URL对象,它指定新URL的基础.第二个参数是一个String,它指定相对于base的资源名称的其余部分.如果baseURL为null,则此构造函数将relativeURL视为绝对URL规范.相反,如果relativeURL是绝对URL规范,则构造函数会忽略baseURL.

这是正确的行为吗?

dgu*_*uay 5

使用此构造函数阅读文档后:

URL(URL baseURL, String relativeURL)
Run Code Online (Sandbox Code Playgroud)

所以你可以这样做:

URL baseUrl = new URL("http://localhost:4567/");
URL url = new URL(baseUrl, "123/asd")
Run Code Online (Sandbox Code Playgroud)

或者你可以做一个单行:

URL url = new URL(new URL(new URL("http://localhost:4567/"), "123/"), "asd");
Run Code Online (Sandbox Code Playgroud)

产量

HTTP://本地主机:123分之4567/ ASD