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

如何修改/更新java.net.URI对象?,java,uri,updates,Java,Uri,Updates,给定一个对象,我需要: 破坏性地修改该对象上的一个字段(例如路径组件)。但是,没有setX方法,因此这些对象似乎是不可变的 构造一个新的URI对象,除了给定的字段(“函数更新”)之外,该对象与原始对象相同。但是,没有withX方法,因此我必须编写自己的逻辑来处理这个问题 我真的需要编写自己的函数来处理URI对象的修改吗?是的,因为java.net.URI是不可变的,所以每次都要创建一个新对象。您可以使用第三方类,如ApacheHttpComponents 示例来自: 谢谢你知道URIBuil

给定一个对象,我需要:

  • 破坏性地修改该对象上的一个字段(例如
    路径
    组件)。但是,没有
    setX
    方法,因此这些对象似乎是不可变的
  • 构造一个新的
    URI
    对象,除了给定的字段(“函数更新”)之外,该对象与原始对象相同。但是,没有
    withX
    方法,因此我必须编写自己的逻辑来处理这个问题

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

是的,因为
java.net.URI
是不可变的,所以每次都要创建一个新对象。您可以使用第三方类,如ApacheHttpComponents

示例来自:


谢谢你知道
URIBuilder
上的
setX
方法实际上是做什么的吗?文档没有说明。我想它会在您创建的
URIBuilder
实例中设置一个字段。设置所有URI组件后,您可以使用
URIBuilder\build()
获得一个新的
URI
实例。
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