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

时间:2014-10-28 17:29:17

标签: java uri updates

给定一个java.net.URI对象,我需要:

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

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

1 个答案:

答案 0 :(得分:3)

是的,每次都会创建一个新对象,因为java.net.URI是不可变的。您可以使用像Apache HttpComponents'这样的第三方类。 URIBuilder

official tutorial的示例:

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