ToolActToolAct

Инструмент форматирования Java

Ввод Java
Вывод
Строк: 1Символов: 0Байт: 0
Строк: 1Символов: 0

Что такое форматирование Java?

Java Formatter упорядочивает Java-код с едиными отступами, переносами строк и структурой, чтобы классы, методы, блоки, generics, аннотации и управляющий поток было легче читать. Он полезен для вставленных фрагментов, сгенерированного кода, подготовки ревью, учебных примеров и файлов, которые выглядят по-разному из-за настроек редакторов. Форматирование улучшает читаемость и командную работу, но не исправляет логику, ошибки компиляции, отсутствующие импорты, неверное использование API и правила стиля проекта. В production-репозиториях результат нужно сверять с formatter команды, build-инструментом или CI, чтобы не создавать лишний шум в diff. Для production-данных или кодовой базы результат все равно нужно проверить parser, тестами или правилами проекта.

Как использовать

Как использовать

  1. Вставьте или введите код Java в левое поле ввода
  2. Выберите размер отступа (2 пробела, 4 пробела или Tab)
  3. Нажмите «Форматировать» для улучшения читаемости кода или «Сжать» для минификации
  4. Просмотрите результаты справа (с подсветкой синтаксиса)
  5. Нажмите «Копировать» для копирования в буфер обмена

Описание параметров

Размер отступаВыберите отступ: 2 пробела, 4 пробела или Tab
ФорматироватьУлучшите читаемость кода с правильными отступами и переносами строк
СжатьУдалите пробелы и комментарии для уменьшения размера файла

Советы по коду

  • Форматирование улучшает читаемость, но не компилирует и не проверяет типы в коде Java, поэтому после редактирования запускайте обычную сборку или проверки IDE.
  • Минификация исходного кода Java редко полезна для продакшен-сборок: сохраняйте читаемое форматирование для ревью, трассировки стека и дальнейшей поддержки.

Применение

Приведение в порядок вставленного Java перед ревью кодаКогда тело метода скопировано из чата, документации или комментария к тикету с непоследовательными отступами, форматировщик быстро восстанавливает читаемые отступы и переносы строк вокруг скобок и операторов. Особенно полезно для небольших фрагментов, где нужна пригодная для ревью форма без открытия полного проекта в IDE.
Подготовка компактных примеров для документации или баг-репортовРежим сжатия убирает комментарии и лишние пробелы, чтобы пример Java поместился в поле тикета, аннотацию к логу или описание воспроизведения без прокрутки. Поскольку парсинг и минификация происходят целиком в браузере, внутренние имена пакетов, незаконченные DTO или проприетарный код из приватной ветки можно переформатировать, не покидая страницу — что важно при обмене репродуктором, содержащим идентификаторы клиентов.
Обнаружение очевидных структурных ошибок в коротких фрагментахВстроенная валидация проверяет баланс скобок с учётом строк, символьных литералов и комментариев, поэтому может поймать пропущенную скобку до вставки фрагмента куда-либо. Это не компилятор, но быстрая sanity-проверка для задач на собеседовании, примеров в документации и изолированных утилитных методов.
Выравнивание сгенерированного кода под отступы проектаПереключайте между отступами в 2 пробела, 4 пробела и табуляцией, чтобы сгенерированные геттеры, вывод Lombok или экспорт IDE совпадали с окружающими файлами. Не запускайте это на весь модуль, не сверившись с Google Java Style, Checkstyle или Spotless конфигурацией команды, иначе форматирование создаст шумный diff.
Безопасное форматирование фрагментов с enum и аннотациямиВставленные enum с константами, методами и массивами аннотаций в чате часто превращаются в нечитаемые стены текста. Переформатируйте их, чтобы каждая константа и её аргументы оказались на отдельной строке, затем проверьте, что импорты и модификатор public остались на месте после перезаписи. Google Java Style предписывает 4 пробела на уровень и ширину строки 100 символов, профиль Eclipse по умолчанию использует 2 пробела, а встроенный стиль IntelliJ часто расширяется до 120 символов — запуск форматирования без сверки с профилем команды даст diff даже при валидном коде. Правила порядка импортов (сначала static, затем java.*, затем javax.*, затем внешние, затем локальные) также зависят от стиля, а пробелы в обобщённых типах Map<String, List<Integer>> в отличие от устаревшей формы Map <String, List<Integer>> нормализуются без пробела по Google Style.

Технический принцип

Форматирование Java основано на лексическом анализе и построении AST. Лексический анализатор сканирует исходный код посимвольно и выдаёт токены: ключевые слова (class, public, static и другие зарезервированные слова), идентификаторы (имена переменных и классов), литералы (числа, строки, символы), операторы (+, -, ==, &&, ...), разделители ({ } ( ) ; ,) и комментарии (//, /* */). Синтаксический анализатор превращает поток токенов в абстрактное синтаксическое дерево (AST) в соответствии со спецификацией языка Java, распознавая определения классов, тела методов, блоки операторов, управляющие конструкции, аннотации и другие синтаксические единицы. Форматировщик обходит AST и генерирует код заново по руководству по стилю, например Google Java Style: отступ увеличивается с глубиной блока, ширина строки ограничена 100 символами, операторы окружаются пробелами, после запятых ставится пробел, а открывающие фигурные скобки остаются на той же строке (стиль K&R). Обработка аннотаций — особый случай в форматировании Java: одиночная аннотация остаётся на той же строке, что и метод; длинные списки аннотаций разбиваются по строкам с выравниванием по параметрам, каждая аннотация — на отдельной строке.

  • Лексический анализ: распознавание 50 ключевых слов Java, идентификаторов, литералов, операторов и комментариев с выводом потока токенов.
  • Построение AST: создание абстрактного синтаксического дерева по правилам JLS с корректной обработкой классов, методов, управляющих конструкций, лямбд и try-with-resources.
  • Правила отступов: стиль Google использует 4 пробела на уровень по умолчанию с шириной строки 100 символов; строки, превышающие лимит, переносятся автоматически.
  • Стратегия переноса: длинные цепочки методов, списки параметров и аннотации переносятся по запятым или точкам, а продолжение выравнивается по первому символу предыдущей строки.
  • Обработка аннотаций: одиночная аннотация остаётся на той же строке; несколько аннотаций могут быть на одной строке или по одной на строку — решение зависит от длины и правил выравнивания параметров.
  • Сохранение комментариев: комментарии // и /* */ остаются в оригинальных позициях; удаление доступно как опция при минификации.

Примеры

Форматирование определения класса

Вход:  public class User{private Long id;private String name;public User(Long id,String name){this.id=id;this.name=name;}}
Выход:
public class User {
  private Long id;
  private String name;

  public User(Long id, String name) {
    this.id = id;
    this.name = name;
  }
}

Форматирование цепочки методов

Вход:  List<String> result=list.stream().filter(s->s.startsWith("a")).map(String::toUpperCase).sorted().collect(Collectors.toList());
Выход:
List<String> result = list.stream()
    .filter(s -> s.startsWith("a"))
    .map(String::toUpperCase)
    .sorted()
    .collect(Collectors.toList());

Перенос аннотаций

Вход:  @Override public ResponseEntity<User> getUser(@PathVariable Long id,@RequestParam(defaultValue="10") int size){...}
Выход:
@Override
public ResponseEntity<User> getUser(
    @PathVariable Long id,
    @RequestParam(defaultValue = "10") int size) {
  ...
}

Часто задаваемые вопросы

Какой стиль Java используется?

Распространённые значения по умолчанию — Google Java Style или соглашения Sun/Oracle: отступ 4 пробела, расстановка скобок K&R, ширина строки 100 столбцов. В некоторых сборках есть опции переключения стилей. Точные правила любого стиль-гайда тонки — запустите форматирование, прочитайте результат и зафиксируйте конфигурацию.

Понимает ли форматер современный Java?

Зависит от версии парсера. Records, sealed-классы, switch-выражения, текстовые блоки и сопоставление с образцом — относительно новые возможности; старые парсеры могут их не поддерживать. Попробуйте кусочек кода: если он отформатировался чисто — всё в порядке; если выпадает с ошибкой — проверьте версию парсера.

Исправит ли он импорты или неиспользуемые переменные?

Нет. Форматирование меняет только пробелы и расстановку скобок. Статический анализ (упорядочивание импортов, удаление неиспользуемого) требует полноценной IDE или такого инструмента, как google-java-format с отключённым флагом --skip-removing-unused-imports.

Загружается ли мой исходный код?

Нет. Форматирование выполняется в браузере через JS-парсер Java. Код не передаётся. Тем не менее не вставляйте проприетарный код, если ваша политика безопасности запрещает использование любых веб-инструментов.

Совпадёт ли результат с форматированием IntelliJ или Eclipse?

Скорее всего, не точно. У каждой IDE свой форматер с тысячами опций. Используйте этот инструмент для разовых задач; для согласованности в команде применяйте инструмент с CI-проверкой — google-java-format или Spotless, встроенные в сборку.

Может ли он минифицировать Java?

Java — компилируемый язык, и минификация работает не так, как в JS. Оптимизацию class-файлов выполняют компиляторы и ProGuard на этапе сборки. Эта страница — только для форматирования исходников.

Почему в моём коде появляются дополнительные пустые строки?

Многие стиль-гайды требуют пустую строку между членами класса или между методами. Форматер вставляет их для соответствия. Если вы предпочитаете компактный код, переопределите соответствующие опции стиля.

Связанные инструменты

Инструмент форматирования JavaScript

Онлайн-инструмент для форматирования JavaScript с подсветкой синтаксиса, сжатием и проверкой. Одним нажатием упорядочите JS код.

Инструмент форматирования Python

Онлайн-инструмент для форматирования Python с подсветкой синтаксиса, сжатием и проверкой. Одним нажатием упорядочите Python код.

Инструмент форматирования JSON

Онлайн-инструмент для форматирования JSON с подсветкой синтаксиса, обнаружением ошибок и сжатием. Одним нажатием форматируйте JSON данные, быстро находите ошибки формата.

Инструмент форматирования XML

Онлайн-инструмент для форматирования XML с автоматическим отступом, валидацией синтаксиса и сжатием. Настраиваемый отступ, быстрое обнаружение ошибок формата XML.

Инструмент форматирования SQL

Бесплатный онлайн-форматировщик SQL: красивое форматирование, минификация, смена регистра ключевых слов и подсветка синтаксиса для читаемых запросов.

Инструмент тестирования регулярных выражений

Бесплатный онлайн-тестер регулярных выражений с мгновенным сопоставлением и подсветкой совпадений. Отлаживайте и проверяйте regex на ваших примерах.