Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

274
Visualizações
La variable no se ha inicializado en Java

El siguiente código no se compila porque la variable 'rt' no se ha inicializado.

Quiero que el código inicialice 'rt' en la declaración de cambio, o que ya no use 'rt' cuando se ejecuta el caso predeterminado.

Aquí está el código que he escrito:

 enum RequestType {leader, candidate}; private void processRequest(String input) { boolean inputOK = true; RequestType rt; String[] split = input.split(":"); if (!input.contains(":")) { inputOK = false; } else { if (split.length != 3) { inputOK = false; } else { int port = Integer.parseInt(split[2]); if (!(port > 0 && port < 65537)) { inputOK = false; } else { switch (split[0]) { case "Leader": rt = RequestType.leader; break; case "Candidate": rt = RequestType.candidate; break; default: inputOK = false; } } } } if (!inputOK) { return; } String address = split[1].concat(split[2]); if (rt == RequestType.leader) { keepingLeader(address); }
over 4 years ago · Santiago Trujillo
1 Respostas
Responde à pergunta

0

No inicializa rt en el bloque predeterminado, o muchos de los ifs.

El compilador no analiza si la lectura de rt es accesible con respecto al valor de inputOK , solo analiza si es accesible en absoluto.

Lo más fácil de hacer es regresar inmediatamente donde actualmente tiene inputOK = false; .

Alternativamente, puede asignar un valor predeterminado a rt , por ejemplo, null , cuando lo declara. El problema con eso es que rompe la verificación que el compilador está haciendo ahora, que realmente lo ha asignado en todas las circunstancias, por lo que no usa accidentalmente el valor predeterminado.

En su lugar, puede usar la nulidad de rt en lugar de tener un valor booleano separado:

  • Donde actualmente asigna inputOK = false , asigne rt = null en su lugar;
  • Donde luego verifica !inputOK y regresa si es verdadero, marque rt == null en su lugar.
over 4 years ago · Santiago Trujillo Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda