Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

113
Views
¿Tengo que asegurarme de que las clases se carguen manualmente en Java antes de usar los datos a los que afectan?

Una especie de pregunta de curiosidad, cuando estoy escribiendo un programa en Java que se parece a esto:

 public class Basic { public static HashMap<String,Integer> my_map = new HashMap<>(); public static void main(String[] a) { mymap.forEach( (str,i) -> System.out.println(str+": "+i) ); } }

esencialmente una estructura para contener y procesar algunos datos estáticos/globales, y luego decir, por ejemplo (para la limpieza del código) mis valores en una clase diferente en un archivo diferente que cargaría todos los valores en esa clase principal al iniciar de esta manera:

 public class Foo { static final String a = def("APPLE"); static final String b = def("BUMBLEBEE"); static final String c = def("CARTOGRAPHER"); static String def (String s) { Basic.my_map.put(s, new Random().nextInt(256)); return s; } }

ahora, para que este código funcione correctamente (es decir, al iniciar el programa, se imprimen todos los valores definidos en Foo), mi instinto es definir una función vacía dentro de Foo y llamarla justo al comienzo de main,

y básicamente me preguntaba si esto era realmente necesario. ¿Se iniciarán todas las variables estáticas antes de que se inicie el programa o al menos antes de que se use cualquier código que afecten? ¿O siempre es mejor asegurarse manualmente de que una clase se haya cargado antes de interactuar con los datos con los que podría haber interactuado?

over 4 years ago · Santiago Trujillo
1 answers
Answer question

0

Una clase se carga cuando se accede, incluso para leer solo un campo estático de ella, luego todos sus campos estáticos se inicializarán (a nulo si no están asignados) y luego se ejecutará cualquier bloque estático.

Entonces, cuando su clase de "relleno" accede al nombre de la clase que debe "rellenarse", hace que se cargue.

En su ejemplo, nada llama/se refiere a "Foo". Suponiendo que solo ejecute el método principal de Basic, entonces debería ejecutarse vacío.

over 4 years ago · Santiago Trujillo Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!