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

181
Vistas
objetos polimórficos de fundición hacia abajo

Hay un bloque de datos que contiene datos empaquetados continuos de estructuras de diferentes tipos. Es necesario leer estos datos en una matriz. Estaba programado así:

 class Handler{ //... public List<MyStruct> getMyStructs(){ // when processing, some subsequent data depends on the // processing of the previous ones } //... } abstract class MyStruct{ // Common method implementations for all structs } class ImpulsOne extends MyStruct{ // declaring and init fields // methods } class ImpulsTwo extends MyStruct{ // declaring and init fields // methods } //and etc...

Después de haber recibido la Lista, vivimos y disfrutamos de la vida utilizando los métodos comunes que se encuentran en MyStruct. Pero esto sucede siempre que no haya ninguna tarea para extraer y mostrar o procesar varios campos de varias estructuras de ciertos tipos. Puede haber muchos de estos procesamientos y, desafortunadamente, cada uno depende de los resultados del procesamiento anterior.

Lo único que se me ocurrió es hacer un downcast con cada procesamiento:

 //... SomeResult processing1(List<MyStruct> structs){ //... for(var struct: structs){ if(struct instanceof ImpulsOne){ ImpulsOne impuls = (ImpulsOne) struct // extracting fields and processing }else if(struct instanceof ImpulsTwo){ ImpulsTwo = (ImpulsTwo) struct // extracting fields and processing } // and many many else-if } } //...

No me gusta este enfoque y estoy seguro de que se puede hacer más fácil.

Espero haber explicado claramente toda la esencia del problema. ¿Te has enfrentado a un problema similar? ¿Qué ideas tienes para simplificar el código?

Gracias.

over 4 years ago · Santiago Trujillo
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