2

使用 oracle java 1.8.0_25

我有以下构造

URL url = new URL(new URL(new URL("http://localhost:4567/"), "123"), "asd")

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

该文件指出

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

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

这是正确的行为吗?

4

1 回答 1

6

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

URL(URL baseURL, String relativeURL)

所以你可以做这样的事情:

URL baseUrl = new URL("http://localhost:4567/");
URL url = new URL(baseUrl, "123/asd")

或者您可以将其作为单线执行:

URL url = new URL(new URL(new URL("http://localhost:4567/"), "123/"), "asd");

输出

http://localhost:4567/123/asd

于 2015-10-26T15:37:45.593 回答