Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

273
Vistas
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 Respuestas
Responde la pregunta

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 Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda