Преобразование java.net.URI в org.eclipse.emf.common.util.URI

В 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, а с новой строкой новый URI EMF... это приведет к исключению файла, не найденного.


person Martin    schedule 08.06.2011    source источник


Ответы (1)


Во-первых, в 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());
person Kellindil    schedule 08.06.2011