Java 10 em Foco: Dominando a Inferência de Tipo de Variável Local com var
JEP 286 - Inferência de Tipo de Variável Local
A inferência de tipo de variável local é a mudança mais evidente na linguagem a partir do Java 10. Permite declarar uma variável usando var sem especificar o tipo. O compilador infere o tipo pelo valor atribuído. Esta inferência é restrita a variáveis locais.
Forma Antiga vs Nova
// Antiga
String nome = "Bem-vindo ao tutorialspoint.com";
// Nova (Java 10+)
var nome = "Bem-vindo ao tutorialspoint.com";
O compilador infere o tipo de nome como String inspecionando o valor.
Pontos Importantes
- Não há inferência de tipo para variáveis de instância (membros), parâmetros de método ou valores de retorno.
- A variável local deve ser inicializada na declaração; caso contrário, erro de compilação.
- Inferência disponível em blocos de inicialização de loops.
- Sem overhead em tempo de execução. O compilador infere o tipo no código fonte; não há perda de performance.
- Não há mudança dinâmica de tipo. Uma vez inferido, o tipo não pode ser alterado.
- Reduz código boilerplate complexo.
Exemplo: Collections
// Antes
Map<Integer, String> mapNames = new HashMap<>();
// Com var
var mapNames1 = new HashMap<Integer, String>();
Exemplo Completo
import java.util.List;
public class Tester {
public static void main(String[] args) {
var nomes = List.of("Julie", "Robert", "Chris", "Joseph");
for (var nome : nomes) {
System.out.println(nome);
}
System.out.println("");
for (var i = 0; i < nomes.size(); i++) {
System.out.println(nomes.get(i));
}
}
}
Saída
Julie
Robert
Chris
Joseph
Julie
Robert
Chris
Joseph
O var torna o código mais conciso e legível, mantendo a tipagem estática forte do Java.
Java
- Tipos de Dados Primitivos do Java: Guia Completo com Exemplos
- Dominando Operadores Java: Tipos, Sintaxe e Exemplos Práticos
- Comentários em Java: Tipos, Uso e Boas Práticas
- Dominando o Loop for Aprimorado em Java: Sintaxe, Exemplos e Boas Práticas
- Dominando Strings em Java: Criação, Métodos e Boas Práticas
- Dominando Interfaces em Java: Conceitos, Implementação e Boas Práticas
- Dominando Try-With-Resources em Java: Gerenciamento Automático de Recursos Explicado
- Anotações em Java Explicadas: Tipos, Posicionamento e Exemplos Práticos
- Dominando Type Casting em Java: De Widening a Narrowing e Além
- Java Static Explicado: Variáveis, Métodos e Blocos – Exemplos Práticos