Currently, I have a static method that loads a file.
//class Model is a superclass.
public static Model loadOBJModel(String filename){
Model model = new Model();
//...
// Loading model codes.
//...
return model;
}
And I want to downcast the object Model that was returned by the static method to a Cube class. The Cube class extends the Model class.
I realized that downcasting will cause RuntimeException errors when it is starts the downcasting. I'm looking for a workaround to this method, and was wondering if anyone else have it?
/*What the code I came up with before realizing the downcast problem. This code snippet is what I want the Model static message to change into its subclass.*/
Cube cube = (Cube) Model.loadOBJModel("cube.obj");
Thanks in advance.
You can't safely downcast a Model instance to a Cube instance unless the instance is a Cube in the first place (The King2s code checks if the Model is a Cube before it attempts to downcast which makes it safe, that won't really work in your case though since the model you get from loadOBJModel probably isn't a Cube and thus his code will not attempt to downcast it).
All your Cubes are Models, but a Model is only a Cube if it was created as a Cube.
Thus:
Model modelCube = (Model)new Cube(); //this is fine, we can always treat Cube as a Model since Cube has inherited or re-implemented all public methods and variables from Model)
Cube cube = (Cube)modelCube; //downcast modelCube to Cube , this is also fine since modelCube really is a Cube, we just treated it as a mere Model for a bit.
Cube model = (Cube)new Model(); //This will raise an exception, a Model is not a Cube since Model doesn't inherit or implement Cubes public interface and thus it cannot be treated as a Cube) (This is basically what you try to do, and it doesn't and will not work).
In your case you should most likely let Cube have a Model instead, or just skip the Cube class entierly (I don't quite see what it would do that Model doesn't do allready)
[size="1"]I don't suffer from insanity, I'm enjoying every minute of it.
The voices in my head may not be real, but they have some good ideas!