Преобразуйте java.net.URI в org.eclipse.emf.common.util.URI - PullRequest
3 голосов
/ 08 июня 2011

В Java есть как минимум два типа URI:

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

У меня есть java.net.URI и мне нужно использовать URI EMF. Как я могу преобразовать первое в последнее?

Если я попытаюсь new URI uri = profileUrl.toURI(), я получу сообщение, подобное этому:

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

Я попробовал также какой-то обходной путь, который создаст строку из java.net.URI и с новой строкой новый URI EMF ... это приведет к исключению файла не найден.

1 Ответ

9 голосов
/ 08 июня 2011

Перво-наперво, в Java нет «двух типов URI»: в Java есть только один, а в EMF - один, представляющий собой фреймворк, созданный для моделирования.У них есть собственная реализация URI, потому что это отражает одну из их собственных концепций, или им нужно больше, чем позволяет URI Java, или ... может быть несколько причин для такого выбора, и многие платформы предоставляют свою собственную версию такогоили такой класс (в Eclipse используйте ctrl + shift + T и введите "List" или "Array" для примеров).

Что касается самого вопроса, нет способа перейти непосредственно от java.net.URI к org.eclipse.emf.common.util.URI: вам нужно преобразовать URI Java в строку, а затем создать новый 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.Судя по вашему вопросу, я бы сказал, что вы импортировали org.eclipse.emf.common.util.URI, и поэтому можете просто использовать это:

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