I want to force a downcast on an object that cannot be reset, and wondered what the correct approach would be. A use case is that I have a list of rules that are checked, and that will generate a list of failed rules. A failed rule is a subclass of the rule. But downgrade, like the FailedRule failedRule = (FailedRule) rule;
will fail because the rule object is not an instance of FailedRule
To get around this, I create a clone,
FailedRule failedRule = new FailedRule (rule);
and my FailedRule class is as follows
public class FailedRule extends Rule{
public FailedRule (Rule upcast){
super.setRuleCode( upcast.getRuleCode());
super.setType(upcast.getType());
..
Is there an easier way to do this? To answer my question, the design is flawed, the code should be:
public class FailedRule{
private Rule rule;
..
public setRule(Rule rule){
..