Преобразование существующих дженериков в синтаксис алмаза
Мне скорее нравится синтаксис бриллианта для дженериков, который предлагает Java 7 - не столько с точки зрения экономии времени (ведь большинство IDE заполняют этот бит для вас в любом случае), а только потому, что он делает код немного чище. Из-за этой и других причин (в основном, факт, что я разрабатываю новую часть программного обеспечения и некоторые новые API-интерфейсы в Java 7 будут полезны), я скорее всего собираюсь переключить существующую кодовую базу для использования/требующей Java 7.
Однако там честный кусок уже написал преддиапазонный синтаксис, и я хотел бы последовательно использовать синтаксис алмаза повсюду. Есть ли ярлык IDE (я использую Netbeans, но, очевидно, могу открыть проект в любой свободной среде IDE для выполнения задачи) или что-то еще, что может автоматически переключать существующий общий код на синтаксис алмаза?
Ответы
Ответ 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<>
Это также заменит любые анонимные внутренние классы, поэтому могут возникнуть ошибки компиляции.
Ответ 4
Eclipse обнаруживает аргументы избыточного типа и предлагает быстрое исправление для их удаления и создания алмаза, см. http://thecoderlounge.blogspot.com/2011/07/java-7-support-in-eclipse-jdt-beta-part_22.html
Ответ 5
Это можно сделать с помощью встроенной функции Netbeans "Inspect and Transform".
- Открыть
Refactor
→ Inspect and Transform
- Используйте
Single Inspection
: Can Use Diamond
- Нажмите
Inspect
- Нажмите
Do Refactoring