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

262
Visualizações
¿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 Respostas
Responde à pergunta

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 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