Java コードを貼り付け、4 つのセレクタで整形します。書き換えるのはトークン間の空白だけなので、テキストブロックやリテラル、アノテーション、コメントの内容は変わりません。コードは送信されません。
ブラウザ内でローカルに実行Java のコードを貼り付けると、同じプログラムが整った形で返ります。1 行 1 文、選んだ波括弧スタイル、必要なら折り返しも適用されます。書き換えるのはトークン間の空白だけなので、テキストブロック、文字列・文字リテラル、10_000L や 0b1010 のような数値リテラル、アノテーション、コメントの内容はそのまま残ります。
処理はすべてこのタブ内で完結します。コードは送信されず、オフラインでも動作し、ディスクにも書き込みません。コンパイルや構文検証は行いません。コンパイルできないコードは、整形されて返るだけで修復はされません。
ソースは Java の字句規則で読み取ります。行コメントとブロックコメント、Javadoc、テキストブロック、文字リテラル、文字列エスケープ、0x / 0b 接頭辞・アンダースコア区切り・l / f / d 接尾辞付きの数値リテラル、アノテーション、すべての演算子を認識します。ラムダの -> も switch の -> もそのまま残り、ジェネリクスは Map<String, List<Integer>> のように詰まった形で返ります(式向けの整形ツールが出力する Map < String > のような空白は入りません)。
出力に含まれるトークンは入力とまったく同じで、順序も変わりません。だからこそ """ のテキストブロック、@SuppressWarnings({"unchecked"})、.5f、10_000L、0x1.8p1 といったリテラルが壊れません。テキストブロック・レコード・sealed インターフェース・switch 式・パターンマッチングを含む 15 ファイルのコードを整形し直し、javac 21 で再コンパイルできることを確認しています。唯一の例外はコメントの継続行で、周囲のコードに合わせてインデントし直します。
インデントはタブまたは 2・3・4・8 スペースです。空行は削除、1 行または 2 行までに制限、そのまま保持から選べます。折り返しは既定で無効で、80 または 120 文字で長い行を折ります。折り返し位置はカンマの後ろと演算子の前で、継続行は 1 レベル深くインデントされます。
波括弧スタイルはセレクタに従います。K&R は開き括弧を同じ行に置き、Allman は独立した行に置き、3 つ目のオプションは else・catch・finally だけを新しい行に移します。Chrome では 58 KB の Java ファイルを約 10 ミリ秒で、生成した 4 MB のファイルを約 0.5 秒で整形します。
コンパイラも構文修復も言語バージョンの判定もありません。テキストブロックは Java 15 以降、switch 式は 14 以降、レコードは 16 以降が必要です。コンパイルできないコードは整形されて返りますが、コンパイルできないままです。
完全なスタイルガイドに従うわけでもありません。import の並べ替え、折り返し幅を超えた長い条件式の分割、メソッドチェーンの整列は行いません。プロジェクトでは IDE のフォーマッターを使い、このページはスニペット、パッチ、ログの抜粋、エディタで開けないコード向けに使ってください。