Как изменить инициализацию класса оболочки в Java 9?

Как всем известно из Java 9, большинство конструкторов классов-оболочек устарели.

Например:

new Boolean(true): Deprecated : Instead use Boolean.valueOf(true);
new Boolean("false") : Deprecated : Instead use Boolean.parseBoolean("false");

https://docs.oracle.com/javase/9/docs/api/java/lang/Boolean.html

Просто хотел знать, есть ли какой-либо инструмент или API, разработанный / созданный для внесения этих изменений, или нам нужно создать собственный сценарий / программу / ручные изменения для этого?

Просто подумал о написании сценария оболочки, который будет читать все файлы в каталоге и заменять новое логическое значение на valueOf. Но я застрял, потому что при чтении файла я никогда не узнаю, какой будет тип аргумента? boolean или String, а также когда использовать valueOf и parseString в примере выше.

Используйте утилиту поиска и замены RegEXP IDE

Deb 23.07.2018 14:56

Я могу использовать это, но снова не могу сказать, что следует использовать valueOf или parseBoolean.

Arnab Dhar 23.07.2018 15:10

Почти никогда не требуется вызывать Boolean.valueOf (boolean). Автобокс сделает это за вас.

VGR 23.07.2018 16:55

@VGR Я говорил о Boolean.parseBoolean ("истина"). Здесь параметр - строка.

Arnab Dhar 23.07.2018 17:37

Если вы работаете не в системе Windows или если у вас установлена ​​система Cygwin, вы можете использовать find /path/to/project -name '*.java' -exec sed -i 's/new Boolean\(([^)]*)\)/Boolean.valueOf\1/g' '{}' + для облегчения нагрузки. Однако я не думаю, что можно использовать регулярное выражение для сопоставления произвольных уровней вложенных скобок.

VGR 23.07.2018 17:54
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
В компьютерном программировании биты играют важнейшую роль в представлении и манипулировании данными на двоичном уровне. Побитовые операции...
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
Полный курс Java для разработчиков веб-сайтов и приложений
Полный курс Java для разработчиков веб-сайтов и приложений
Получите сертификат Java Web и Application Developer, используя наш курс.
1
5
328
1

Ответы 1

Здесь вам может помочь любой хороший редактор. В идеале вам просто нужен хороший подход к поиску и замене, чтобы отличить new Boolean("false") от new Boolean(false).

Например, используя intelliJ, можно четко видеть различные совпадающие строки при нахождении new Boolean(true), когда в то же время блок кода включает также и new Boolean("true").

PS: аналогичный подход будет работать с поиском и заменой всех, выполняя то же самое в корневом каталоге проекта. Вот и гид от JetBrains примерно такой же.

Это нормально с редактором. Но предположим, что у меня есть около 500+ классов, которые имеют такую ​​инициализацию объекта-оболочки. Я не хочу делать это вручную, открывая каждый класс в редакторе.

Arnab Dhar 23.07.2018 17:36

@ArnabDhar Существует опция ReplaceAll и FindAll (с указанием пути к каталогу), доступная с IDE, а также для самой этой цели

Naman 23.07.2018 18:56

Другие вопросы по теме