Solucionado (ver solução)
Solucionado
(ver solução)
3
respostas

[Dúvida] Declaração de Variáveis com var

Olá boa noite, como vai? existem variáveis que não podem ser inferidas automaticamente? quais são?

obrigado, Maurício Gomes

3 respostas
solução!

Olá, Maurício! Tudo bem?

A palavra-chave var em Java (introduzida a partir do Java 10) permite que o compilador infira o tipo da variável com base na expressão do lado direito da declaração. Por exemplo:

var nome = "João"; // O compilador infere que 'nome' é String
var idade = 30;    // O compilador infere que 'idade' é int
var salario = 2500.50; // O compilador infere que 'salario' é double
var lista = new ArrayList<String>(); // O compilador infere que 'lista' é ArrayList<String>

A inferência de tipo com var tem algumas limitações. O compilador precisa ter informações suficientes na inicialização para determinar o tipo da variável. Portanto, var não pode ser usado nos seguintes cenários:

  1. Variáveis não inicializadas: Você precisa inicializar a variável var no momento da declaração, pois o compilador precisa da expressão do lado direito para inferir o tipo.
    var mensagem; // Erro de compilação: não é possível inferir o tipo sem inicialização
    mensagem = "Olá";
    
  2. Inicialização com null: Se você inicializar uma variável com null, o compilador não terá informações suficientes para inferir o tipo.
    var objeto = null; // Erro de compilação: não é possível inferir o tipo de 'null'
    
    Nesse caso, você precisaria declarar o tipo explicitamente:
    String objeto = null;
    
  3. Tipos de retorno de métodos ou tipos de parâmetros: var só pode ser usado para variáveis locais dentro de métodos, construtores ou blocos de inicialização. Não pode ser usado para declarar o tipo de retorno de um método ou o tipo de um parâmetro de método.
    public var getNome() { // Erro de compilação
        return nome;
    }
    public void processar(var valor) { // Erro de compilação
        // ...
    }
    
  4. Campos de classe (variáveis de instância ou estáticas) sem inicializador: Embora seja possível inicializar campos de classe diretamente na declaração com var, se não houver inicialização, o compilador não poderá inferir o tipo. No entanto, geralmente, os campos de classe são declarados com seus tipos explícitos para melhor legibilidade e clareza do design da classe.
    public class MinhaClasse {
        var contador; // Erro de compilação: precisa ser inicializado ou ter tipo explícito
        public static var CONSTANTE; // Erro de compilação: precisa ser inicializada ou ter tipo explícito
    }
    
  5. Arrays sem inicializador de array: Ao declarar um array com var, você precisa fornecer um inicializador de array {} para que o compilador possa inferir o tipo dos elementos do array.
    var numeros = new int[5]; // Correto, o tipo é especificado na criação do array
    var valores = {1, 2, 3}; // Correto, o compilador infere que é um array de int
    var outrosValores; // Erro de compilação: não é possível inferir o tipo sem inicializador
    outrosValores = {4.5, 6.7};
    

Espero ter ajudado e bons estudos!

olá José, obrigado, sucesso para todos nós.

Por nada, Maurício!

Sim, sucesso para todos nós. vamos juntos nessa caminha de estudos. Qualquer dúvida não hesite em postar no fórum. Bons estudos!