如何在Java中克隆URI

7

有没有更好的方法来获取URI的副本(克隆)而不是这种可怕的hack?

import org.eclipse.emf.common.util.URI;

URI cloned = URI.createURI( originalURI.toString() );
2个回答

15

URI是不可变的值类 - 因此您通常不需要复制。但如果您真的需要,那么您的“hack”(其实并不那么糟糕)是做法。

编辑:我刚刚注意到您没有使用java.net.URI...

来自Eclipse SDK javadocs

像String一样,URI是一个不可变类;

该类也是不可变的,同样适用上述建议。您通常不需要复制,只需重用您拥有的URI实例即可。它之所以安全,是因为一旦对象被创建,就不能更改。两个不同的客户端可以使用相同的URI,而无需担心它会被其他客户端修改。

URI上有一些更新URI组件的方法(例如appendQuery()),但更新是在URI的新实例上完成的 - 现有的URI不会被修改。


完美。不变性让我朝着正确的方向前进。这就是我想要的(但保持originalURI不变)。originalURI.trimFileExtension().appendFileExtension("doc") - alesch

2

只需简单地编写:

Uri newUri = Uri.parse(oldUri.toString());

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接