是否有更好的方法来获取URI的副本(克隆)而不是这个可怕的黑客?
import org.eclipse.emf.common.util.URI;
URI cloned = URI.createURI( originalURI.toString() );
答案 0 :(得分:12)
URI是不可变的值类 - 所以你不应该真的需要复制。但是如果你真的需要,那么你的“黑客”(它真的不是那么糟糕)就是这样做的。
编辑:我刚注意到你没有使用java.net.URI ......来自Eclipse SDK javadocs,
与String类似,URI是一个不可变类;
该类也是不可变的,同样的建议也适用。您通常不需要复制,只需重用您拥有的URI实例即可。它是安全的原因是一旦创建了对象,它就无法更改。两个不同的客户端可以使用相同的URI,而不必担心它会被另一个客户端修改。
URI上有一些方法可以更新URI的组件(例如appendQuery()
),但更新是在URI的新实例上完成的 - 现有URI未经修改。
答案 1 :(得分:0)
简单地写一下:
Uri newUri = Uri.parse(oldUri.toString());