vendredi 26 janvier 2018

Create object in function based on Class argument

I want to define a function that creates different type objects that share the same base class. I'd like to pass in the object type and have the function creating the object and then modifying its attributes. The problem is that the main class from which all these objects are created, does not have the object's attributes so the code fails to compile.

Example:

public void new_generic_report(Class report_class, String report_name) {

    Report new_report = this.reportManager.createReport(report_class);
    new_report.set_name(report_name);

}

Calling new_generic_report(GreenReport.class, "green_report"); fails because new_report is of the class Report instead of GreenReport so it does not have the .set_name method.

I know I could implement the .set_name method (and other common methods) in the main Report class but I am writing code to interface with an API that I cannot modify.

Aucun commentaire:

Enregistrer un commentaire