Ferramenta de Formatação Java
O que é Formatação Java?
O formatador Java reorganiza código Java com indentação, quebras de linha e estrutura consistentes para tornar classes, métodos, blocos, generics, anotações e fluxo de controle mais fáceis de ler. Ele é útil para trechos colados, código gerado, preparação de revisão, exemplos de estudo e arquivos inconsistentes por configurações diferentes de editor. A formatação melhora legibilidade e colaboração, mas não corrige lógica, erros de compilação, imports ausentes, uso incorreto de APIs nem regras de estilo específicas do projeto. Em repositórios reais, compare a saída com o formatter da equipe, ferramenta de build ou convenção da CI para evitar ruído em diffs.
Como Usar
Como usar
- Cole ou digite o código Java na caixa de entrada à esquerda
- Selecione o tamanho da indentação (2 espaços, 4 espaços ou Tab)
- Clique em 'Formatar' para embelezar o código ou em 'Minificar' para comprimir
- Veja os resultados à direita (com destaque de sintaxe)
- Clique em 'Copiar' para copiar para a área de transferência
Descrição das Opções
Dicas de Código
- A formatação melhora a legibilidade, mas não compila nem verifica tipos do código Java. Execute sua build normal ou as verificações da IDE após editar.
- Minificar código Java raramente é útil em builds de produção; mantenha a formatação legível para revisões, stack traces e manutenção futura.
Casos de uso
Princípio técnico
A formatação Java é construída sobre análise léxica e construção de AST. O lexer escaneia o código fonte caractere por caractere e produz tokens: palavras-chave (class, public, static e outras palavras reservadas), identificadores (nomes de variáveis e classes), literais (números, strings, caracteres), operadores (+, -, ==, &&, ...), separadores ({ } ( ) ; ,) e comentários (//, /* */). O parser converte o fluxo de tokens em uma árvore sintática abstrata (AST) seguindo a especificação da linguagem Java (JLS), reconhecendo definições de classes, corpos de métodos, blocos de instruções, estruturas de controle de fluxo, anotações e outras unidades sintáticas. O formatador percorre a AST e regenera o código seguindo um guia de estilo como o Google Java Style: a indentação aumenta com a profundidade do bloco, a largura de linha é limitada a 100 colunas, operadores recebem espaços em ambos os lados, vírgulas são seguidas por um espaço e chaves de abertura permanecem na mesma linha (estilo K&R). O tratamento de anotações é um caso especial na formatação Java: uma única anotação permanece na mesma linha do método; listas de anotações mais longas são quebradas em várias linhas alinhadas nos parâmetros, com cada anotação em sua própria linha.
- Análise léxica: reconhecer as 50 palavras-chave Java, identificadores, literais, operadores e comentários, e gerar um fluxo de tokens.
- Construção da AST: construir a AST conforme as regras do JLS, tratando corretamente classes, métodos, controle de fluxo, lambdas e try-with-resources.
- Regras de indentação: o estilo Google usa 4 espaços por nível por padrão, com largura de linha de 100 colunas; linhas que excedem o limite são quebradas automaticamente.
- Estratégia de quebra de linha: cadeias de métodos longas, listas de parâmetros e anotações são quebradas em vírgulas ou pontos, com linhas de continuação alinhadas ao primeiro caractere da linha anterior.
- Tratamento de anotações: uma única anotação permanece na mesma linha; múltiplas anotações podem ficar em uma linha ou uma por linha, decidido pelo comprimento e regras de alinhamento de parâmetros.
- Preservação de comentários: manter comentários // e /* */ em suas posições originais; a remoção é uma opção durante a minificação.
Exemplos
Formatando uma definição de classe
Entrada: public class User{private Long id;private String name;public User(Long id,String name){this.id=id;this.name=name;}}
Saída:
public class User {
private Long id;
private String name;
public User(Long id, String name) {
this.id = id;
this.name = name;
}
}Formatando uma cadeia de métodos
Entrada: List<String> result=list.stream().filter(s->s.startsWith("a")).map(String::toUpperCase).sorted().collect(Collectors.toList());
Saída:
List<String> result = list.stream()
.filter(s -> s.startsWith("a"))
.map(String::toUpperCase)
.sorted()
.collect(Collectors.toList());Quebrando linhas de anotações
Entrada: @Override public ResponseEntity<User> getUser(@PathVariable Long id,@RequestParam(defaultValue="10") int size){...}
Saída:
@Override
public ResponseEntity<User> getUser(
@PathVariable Long id,
@RequestParam(defaultValue = "10") int size) {
...
}Perguntas frequentes
Qual estilo Java é usado?
Os padrões comuns são o Google Java Style ou as convenções Sun/Oracle: indentação de 4 espaços, estilo de chaves K&R, largura de linha de 100 colunas. Algumas builds expõem opções para alternar estilos. As regras exatas de qualquer guia de estilo são sutis — rode o formatador, leia a saída e fixe uma configuração.
O formatador entende Java moderno?
Depende da versão do parser. Records, sealed classes, switch expressions, text blocks e pattern matching são adições recentes; parsers mais antigos podem não suportá-los. Tente um trecho — se formatar limpo, está tudo bem; se der erro, verifique a versão do parser.
Ele corrige imports ou variáveis não utilizadas?
Não. A formatação só altera espaços em branco e posicionamento de chaves. Análise estática (organizar imports, remover não utilizados) precisa de uma IDE de verdade ou uma ferramenta como o google-java-format com --skip-removing-unused-imports desligado.
Meu código-fonte é enviado para algum servidor?
Não. A formatação roda no seu navegador via um parser Java em JS. O código não é transmitido. Evite colar código proprietário se sua política de segurança proíbe qualquer exposição em ferramentas web.
O resultado vai bater com o do IntelliJ ou Eclipse?
Provavelmente não exatamente. Cada IDE tem seu próprio formatador com milhares de opções. Use isto para formatação pontual; para consistência da equipe, use uma ferramenta aplicada via CI como google-java-format ou Spotless integrada ao seu build.
Dá para minificar Java?
Java é uma linguagem compilada — a minificação não se aplica como em JS. A otimização de class files é o que os compiladores e o ProGuard fazem em tempo de build. Esta página é apenas para formatação de código-fonte.
Por que meu código ficou com linhas em branco a mais?
Muitos guias de estilo exigem uma linha em branco entre membros de classe ou entre métodos. O formatador insere essas linhas para seguir o padrão. Se você prefere código compacto, ajuste as opções de estilo correspondentes.