如何修改/更新java.net.URI对象?

7
给定一个 java.net.URI 对象,我需要做到以下两点之一:
  • 破坏性地修改该对象上的一个字段(例如 path 组件)。但是,这些对象似乎应该是不可变的,因此没有 setX 方法。
  • 构造一个新的 URI 对象,它与原始对象相同,除了一个给定的字段(“函数式更新”)。然而,没有 withX 方法,所以我必须编写自己的逻辑来处理这个问题。

我真的必须编写自己的函数来处理对 URI 对象的修改吗?

1个回答

6

每次你都需要创建一个新的对象,因为java.net.URI是不可变的。你可以使用第三方类库如Apache HttpComponents的 URIBuilder

下面是来自官方教程的例子:

URI uri = new URIBuilder()
    .setScheme("http")
    .setHost("www.google.com")
    .setPath("/search")
    .setParameter("q", "httpclient")
    .setParameter("btnG", "Google Search")
    .setParameter("aq", "f")
    .setParameter("oq", "")
    .build();    // the build method creates a new URI instance behind the scenes

谢谢。您知道 URIBuilder 上的 setX 方法实际上是做什么的吗?文档中没有说明。 - jameshfisher
我猜它会在你创建的URIBuilder实例中设置一个字段。在设置完所有URI组件后,您可以使用URIBuilder#build()获取新的URI实例。 - M A

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接