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