Как я могу запретить Eclipse импортировать вложенные классы? - PullRequest
7 голосов
/ 23 апреля 2011

Всякий раз, когда я использую вложенные классы, я даю им имена , не включая имя внешнего класса, например, MySomething.Kind, а не MySomething.MySomethingKind. Вложенные классы иногда видны снаружи, и тогда я хочу всегда ссылаться на них по имени, определяемому включающим классом, то есть MySomething.Kind, а не просто Kind. Иногда существует несколько классов, содержащих вложенный Kind, поэтому использование неквалифицированного имени может привести к путанице.

Есть ли способ предотвратить ненужный импорт Eclipse mypackage.MySomething.Kind вместо использования (уже импортированного) mypackage.MySomething вместе с полуквалифицированным именем ?

UPDATE:

Это не происходит спонтанно. Как сказано в jprete , когда я всегда использую полускоряченное имя, вложенный класс не импортируется. Но любой рефакторинг, создающий переменную типа MySomething.Kind, объявляет ее только как Kind и добавляет нежелательный оператор импорта. Это делает рефакторинг бесполезным, так как мне приходится редактировать его вручную. Всякий раз, когда я забываю, я получаю худшее из обоих: смесь неквалифицированных и полуквалифицированных имен.

Ответы [ 2 ]

1 голос
/ 10 сентября 2015

Похоже, что решения нет, но то, что я делаю сейчас, довольно практично (при использовании в сценарии):

find src -name "*.java" | xargs perl -pi -e \
        's/^(import [.\w]+\.)([A-Z]\w+)(\..*);/$1$2;/;'

Он просто заменяет весь нежелательный импорт, как

import java.util.Map.Entry;

по внешнему классу импортирует как

import java.util.Map;

Требуется несколько секунд, чтобы исправить ошибки вручную и позволить упорядочить импорт, чтобы избавиться от дубликатов. Он игнорирует статический импорт, как я хочу.

Предупреждения:

  • затрагивает все файлы ( решение )
  • Вы должны обновить их в затмении
  • он изменяет исходный код, что является чем-то никто не должен обходиться без управления исходным кодом
1 голос
/ 23 апреля 2011

Я обнаружил, что, если я всегда буду ссылаться на вложенный класс с "полуколичественным" именем - т.е. MySomething.Kind вместо Kind - то Eclipse не попытается автоматически добавить import mypackage.MySomething.Kind, когда я скажу ему реорганизовать импорт, но вместо этого добавлю только import mypackage.MySomething и оставлю только ссылки «Class.NestedClass».

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...