4

第一个例子:

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 中)?

4

2 回答 2

4

这是泽西岛的一个缺陷,它已经修复:http: //java.net/jira/browse/JERSEY-1081

于 2012-04-26T09:10:33.017 回答
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 上使用它来更有效地创建它的新实例,然后再构建一个新实例。所以我认为这里没有必要。

于 2012-04-06T07:38:34.247 回答