Подтвердить что ты не робот

Преобразование существующих дженериков в синтаксис алмаза

Мне скорее нравится синтаксис бриллианта для дженериков, который предлагает Java 7 - не столько с точки зрения экономии времени (ведь большинство IDE заполняют этот бит для вас в любом случае), а только потому, что он делает код немного чище. Из-за этой и других причин (в основном, факт, что я разрабатываю новую часть программного обеспечения и некоторые новые API-интерфейсы в Java 7 будут полезны), я скорее всего собираюсь переключить существующую кодовую базу для использования/требующей Java 7.

Однако там честный кусок уже написал преддиапазонный синтаксис, и я хотел бы последовательно использовать синтаксис алмаза повсюду. Есть ли ярлык IDE (я использую Netbeans, но, очевидно, могу открыть проект в любой свободной среде IDE для выполнения задачи) или что-то еще, что может автоматически переключать существующий общий код на синтаксис алмаза?

4b9b3361

Ответ 1

О да, я успешно сделал это на IntelliJ (бесплатное издание сообщества).

Меню > Анализ > Проверить код...

В результате выберите "Средства миграции уровня языка Java". Тип "Объяснение" можно заменить на < > "

Щелкните правой кнопкой мыши, запустите "Apply Fix" Replace with < > '"И вы получили бриллианты.

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

// anonymous class, <> doesn't work.
new Factory<Pig>(){ ... }  
// however IntelliJ may wrongly "fix" it to
new Factory<>(){ ... }   // does not compile.

Ответ 2

Если вы просто хотите анализировать алмазы, а не все другие проверки, используйте IntelliJ IDEA 12 и перейдите к:

Проанализировать > Запустить проверку по имени... > тип "Явный тип можно заменить на < > " в приглашении, которое открывается > выберите раскрывающийся список и нажмите Enter

После запуска проверки вы можете применить исправление на вкладке "Инспекция" в нижней части экрана.

Это быстрее, чем запуск проверки каждого кода с помощью регулярного "Анализа" > "Проверить код..."

Ответ 3

Используя Eclipse, вы можете использовать find/replace, используя регулярные выражения.

Искать:

new (\w+)<.+>

И замените для:

new $1<>

Это также заменит любые анонимные внутренние классы, поэтому могут возникнуть ошибки компиляции.

Ответ 5

Это можно сделать с помощью встроенной функции Netbeans "Inspect and Transform".

  • Открыть RefactorInspect and Transform
  • Используйте Single Inspection: Can Use Diamond
  • Нажмите Inspect
  • Нажмите Do Refactoring