Transformer java.net.URI de org.Eclipse.EMF.commun.util.URI


Il existe au moins deux types d'URI en Java:

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

J'ai java.net.URI et j'ai besoin d'utiliser l'URI EMF. Comment puis-je convertir le premier en le second?

Si j'essaie new URI uri = profileUrl.toURI() j'obtiendrai un message comme celui-ci:

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

J'ai également essayé une sorte de solution de contournement qui créera une chaîne à partir du java.net.URI et avec la nouvelle chaîne un nouvel URI EMF... cela conduit à une exception fichier introuvable.

Author: Lii, 2011-06-08

1 answers

Tout d'abord, il n'y a pas "deux types d'URI en Java": il n'y en a qu'un en Java, et un dans EMF qui est un framework construit pour la modélisation. Ils ont leur propre implémentation d'URI car cela reflète l'un de leurs propres concepts, ou ils avaient besoin de plus que ce que l'URI de Java permet, ou... il peut y avoir un certain nombre de raisons pour ce choix, et de nombreux cadres de fournir leur propre version de telle ou telle classe (dans Eclipse, utiliser ctrl + maj + {T[7]} et de type "Liste" ou "Tableau" pour des exemples).

En ce qui concerne la question réelle, il n'y a aucun moyen de passer directement d'un java.net.URI à org.eclipse.emf.common.util.URI: vous devez convertir l'URI Java en chaîne, puis créer un nouvel URI autour de cette chaîne. Quelque chose comme ceci:

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

Vous devez utiliser le nom complet d'au moins l'un des deux URI: celui que vous n'avez pas importé dans votre classe Java. À en juger par votre question, je dirais que vous avez importé org.eclipse.emf.common.util.URI, et que vous pouvez donc simplement utiliser ceci:

java.net.URI javaURI = profileUrl.toURI();
URI emfURI = URI.createURI(javaURI.toString());
 9
Author: Kellindil, 2017-10-24 07:53:47