URI являются классами неизменяемых значений, поэтому вам не нужно создавать копию. Но если вам действительно нужно, то ваш «хак» (это действительно не так уж и плохо) - это способ сделать это.
РЕДАКТИРОВАТЬ: я только заметил, что вы не используете java.net.URI ...
Из Eclipse SDK Javadocs ,
Как и String, URI является неизменяемым классом;
Этот класс также неизменен, и тот же совет применим. Обычно вам не нужно делать копию, просто используйте имеющийся у вас экземпляр URI. Причина, по которой это безопасно, заключается в том, что после создания объекта его нельзя изменить. Два разных клиента могут использовать один и тот же URI, не опасаясь, что он будет изменен другим.
Существуют методы для URI, которые обновляют компоненты URI (например, appendQuery()
), но обновления выполняются для нового экземпляра URI - существующий URI не изменяется.