第一个例子:
UriBuilder.fromUri("http://localhost")
.queryParam("foo", "test")
.clone()
.build()
// equals to: "http://localhost/?foo=test"
第二个例子:
UriBuilder.fromUri("http://localhost")
.replaceQueryParam("foo", "test")
.clone()
.build()
// equals to: "http://localhost/"
它应该是这样的还是缺陷(在Jersey 1.11中)?
答案 0 :(得分:4)
这是泽西岛的一个缺陷,它已经修复:http://java.net/jira/browse/JERSEY-1081
答案 1 :(得分:0)
好吧,我不能说为什么会这样,但clone
方法在这里完全没用:
URI uri1 = UriBuilder.fromUri("http://localhost")
.queryParam("foo", "test")
.build();
//prints http://localhost?foo=test
URI uri2 = UriBuilder.fromUri("http://localhost")
.replaceQueryParam("foo", "2")
.build();
//prints http://localhost?foo=2
甚至
URI uri2 = UriBuilder.fromUri(uri1)
.replaceQueryParam("foo", "2")
.build();
//prints http://localhost?foo=2
UPD。关于clone()
方法:
创建UriBuilder的副本,保留其状态
因此,应该在现有的uri上使用它来更有效地创建它的新实例,然后构建一个新实例。所以我觉得这里没必要。