将java.net.URI转换为org.eclipse.emf.common.util.URI

时间:2011-06-08 07:53:42

标签: url eclipse-plugin uri eclipse-emf emf

Java中至少有两种类型的URI:

  • java.net.URI
  • org.eclipse.emf.common.util.URI

我有java.net.URI,需要使用EMF URI。如何将前者转换为后者?

如果我尝试new URI uri = profileUrl.toURI(),我会收到如下信息:

Type mismatch: cannot convert from java.net.URI to org.eclipse.emf.common.util.URI

我还尝试了某种解决方法,它将从java.net.URI创建一个字符串,并使用新字符串创建一个新的EMF URI ...这会导致文件未找到异常。

1 个答案:

答案 0 :(得分:9)

首先,Java中没有“两种类型的URI”:Java中只有一种,EMF中有一种是为建模而构建的框架。他们有自己的URI实现,因为这反映了他们自己的概念之一,或者他们需要的不仅仅是Java的URI允许,或者...这样的选择可能有很多原因,而且许多框架提供了他们自己的这样的版本。或者这样的类(在Eclipse中,使用 ctrl + shift + T 并输入“List”或“Array”作为示例)。

至于实际问题,无法直接从java.net.URI转到org.eclipse.emf.common.util.URI:您需要将Java URI转换为字符串,然后围绕此字符串创建新的URI。像这样:

java.net.URI javaURI = profileUrl.toURI();
org.eclipse.emf.common.util.URI emfURI = org.eclipse.emf.common.util.URI.createURI(javaURI.toString());

您需要使用两个URI中至少一个的完全限定名称:您未在Java类中导入的URI。根据你的问题判断,我说你导入了org.eclipse.emf.common.util.URI,因此可以简单地使用它:

java.net.URI javaURI = profileUrl.toURI();
URI emfURI = URI.createURI(javaURI.toString());