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

263
Views
¿Cómo resuelve Java el problema de inicialización de clases para el que Swift fue diseñado?

De una cita que leí en línea :

Una de las reglas de Swift es que debe inicializar todas las propiedades de una clase antes de inicializar la superclase. Esto evita los problemas que pueden surgir si un superinicializador llama a un método que se anula y genera un estado incoherente.

Entonces, ¿parece que hay algún paradigma de programación detrás de esta declaración? Como estoy usando Java y no existe tal restricción en Java, quiero saber cómo Java resuelve este problema.

over 4 years ago · Santiago Trujillo
1 answers
Answer question

0

En Java, el superconstructor se ejecuta antes que el constructor de la subclase, todo lo contrario de lo que sucede en Swift. Y no hay nada que le impida llamar a un método anulado en el constructor de la superclase, pero eso no significa que deba hacerlo. Vea esta pregunta relacionada:

¿Por qué los métodos invocados en el constructor de clases deberían ser definitivos?

Básicamente, cuando llama a un método anulado, existe la posibilidad de que esté accediendo a campos no inicializados, o simplemente no haga lo que la superclase espera en general.

Sin embargo, hay usos legítimos de esto:

En Java, ¿hay una razón legítima para llamar a un método no final desde un constructor de clase?

En Swift, el inicializador de superclase puede llamar a métodos anulados sin problemas (siempre que todas las propiedades almacenadas estén inicializadas), porque en ese momento, las propiedades de toda la jerarquía de clases están completamente inicializadas.

Hay herramientas como SonarQube que detectan problemas como estos, pero por lo demás el compilador de Java no lo hace. Si pregunta por qué, bueno, es toda esa compensación de "control versus seguridad": ¿quiere un control más detallado sobre su código o más seguridad?

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!