Преобразовать существующие дженерики в алмазный синтаксис - PullRequest
30 голосов
/ 23 июля 2011

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

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

Ответы [ 6 ]

41 голосов
/ 23 июля 2011

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

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

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

Щелкните правой кнопкой мыши, запустите «Применить исправление» Заменить на <> »и вы получите бриллианты.

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

// anonymous class, <> doesn't work.
new Factory<Pig>(){ ... }  
// however IntelliJ may wrongly "fix" it to
new Factory<>(){ ... }   // does not compile.
8 голосов
/ 08 апреля 2013

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

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

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

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

7 голосов
/ 21 октября 2014

Используя Eclipse, вы можете использовать поиск / замену с помощью регулярных выражений.

Поиск:

new (\w+)<.+>

И заменить на:

new $1<>

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

4 голосов
/ 23 июля 2011

Eclipse обнаруживает избыточные аргументы типа и предлагает быстрое решение для их удаления и создания ромба, см. http://thecoderlounge.blogspot.com/2011/07/java-7-support-in-eclipse-jdt-beta-part_22.html

2 голосов
/ 05 ноября 2015

Это можно сделать с помощью встроенной в Netbeans функции «Проверка и преобразование».

  1. Открыть Refactor -> Inspect and Transform
  2. Использование Single Inspection: Can Use Diamond
  3. Нажмите Inspect
  4. Нажмите Do Refactoring
0 голосов
/ 24 июля 2018

Вы также можете использовать инструмент «Очистить» от eclipse. (Источник -> Очистить, вкладка: Ненужный код, «Удалить аргументы избыточного типа»)

...