2009-03-01 3 views
0

Класс JavaCore включает метод create, который позволяет мне получить ITypeRoot (представление файла класса или единицы компиляции) с учетом идентификатора дескриптора, который олицетворяет местоположение файла.В Eclipse JDT, как наиболее эффективно найти typeroot в рабочей области, соответствующей полному имени?

Однако, я пытаюсь найти typeroot (если таковой есть), который соответствует определенному полному имени.

Единственная реализация, которую я могу придумать, - это сканировать все типы в системе, получить тип root на каждом из них (даже не уверенный, как это сделать), а затем сравнить FQN.

Любая помощь будет оценена по достоинству.

ответ

0

Из Javacore одноточечного, попробуйте:

ITypeHierarchy myHierarchy = newTypeHierarchy(IRegion region, WorkingCopyOwner owner, IProgressMonitor monitor); 

После того, как у вас есть иерархия, вы можете пройти иерархии файлов классов, как ITypes довольно легко.

+0

Мне интересно, если это быстрее, чем поисковик типа поисковой системы Eclipse, или идет по проекту и просит его искать тип. Я хочу, чтобы у Eclipse было меньше способов сделать то же самое ... – Uri

0

Я предполагаю, что у вас есть ссылка IJavaProject. Если нет, тогда вам нужно будет перемещать все проекты в рабочей области, так как ITypes различаются в зависимости от того, какой проект вы находитесь, даже если у них одинаковое квалифицированное имя.

Вы могли бы сделать что-то вроде этого:

ITypeRoot root = javaProject.findType(qualifiedName).getTypeRoot(); 

Предостережения:

  1. findType может возвращать нуль, поэтому нужно иметь чек на этой
  2. Этот вариант метода findType предполагает тип - это верхний уровень, а не внутренний или непубличный. Если вам нужно проверить их, то вы должны использовать этот вариант: IType findType(String fullyQualifiedName, IProgressMonitor progressMonitor)
Смежные вопросы