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

287
Views
Usando un método anulado de una clase abstracta (Java)

Tengo tres clases, una SuperClass, una SubClass y una clase de prueba. La SuperClase es abstracta, y la SubClase extiende la SuperClase, la clase de prueba no tiene relación con ninguna de ellas. Asi que

 public abstract class SuperClass {...} public class SubClass extends SuperClass {...} public class TesterClass {...}

Tanto SuperClass como SubClass tienen un método toString(), por lo que se parece más a

 public abstract class SuperClass { public String toString(){...}; ... } public class SubClass extends SuperClass { public String toString(){...}; ... } public class TesterClass {...}

Lo que debo hacer es usar el método toString() de SuperClass dentro de la clase de prueba. Intenté convertir y objetar de SubClass a SuperClass y usar el método desde allí, pero termina usando el método toString() de SubClass. (Y después de que intenté usar un poco de reflexión para ver qué clase Java pensó que era el objeto, parece que pensó que todavía era la Subclase incluso después del lanzamiento). He pensado en tratar de usar la reflexión para obtener directamente el método que quiero de SuperClass y luego llamar al objeto usando invocar (), pero parece una solución realmente complicada.

Cualquier ayuda sería de gran ayuda, incluso si solo me indica un concepto del que aún no he oído hablar. ¡Gracias!

over 4 years ago · Santiago Trujillo
1 answers
Answer question

0

Dentro de la clase TesterClass , puede crear una clase que amplíe la SuperClass abstracta, luego prueba toString de esa subclase. Dado que no anuló el toString de esa subclase, cuando llame a su toString , en realidad estará probando el toString de la superclase ( es decir, SuperClass )

Alternativamente, puede en su método de prueba 1) crear una clase anónima interna de tipo SuperClass ; 2) implementar sus métodos abstractos ( es decir, simplemente ignorarlos porque no se probarán). 3) prueba el toString de la clase anónima interna:

 public class TesterClass { void test_super_class_to_String(){ SuperClass myApp = new SuperClass() { @Override void do_something() {} }; String str = myApp.toString(); // assert str == .... } }

para una SuperClass que se parece a la siguiente

 public abstract class SuperClass { abstract void do_something(); public String toString(){ return ...;} }
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!