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

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

1 ответ

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

Что касается актуального вопроса, нет никакого способа перейти непосредственно от 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());

licensed under cc by-sa 3.0 with attribution.