【问题标题】:How can I modify/update a java.net.URI object?如何修改/更新 java.net.URI 对象?
【发布时间】:2014-10-28 17:29:16
【问题描述】:

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

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

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

【问题讨论】:

    标签: java uri updates


    【解决方案1】:

    是的,您每次都需要创建一个新对象,因为 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
    

    【讨论】:

    • 谢谢。你知道URIBuilder 上的setX 方法实际上是做什么的吗?文档没有说。
    • 我猜它会在您创建的URIBuilder 实例中设置一个字段。设置好所有URI组件后,就可以使用URIBuilder#build()获取一个新的URI实例了。
    猜你喜欢
    • 1970-01-01
    • 2021-08-06
    • 2010-10-08
    • 2014-09-19
    • 2021-07-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多