我希望对一个无法进行向下转型的对象进行强制向下转型,并想知道正确的方法是什么。
使用案例是我有一系列规则进行检查,会生成一份失败规则列表。失败规则是规则的子类。但是像这样进行向下转型
FailedRule failedRule = (FailedRule) rule;
FailedRule failedRule = (FailedRule) rule;
将会失败,因为规则对象不是 FailedRule 的实例。
为了解决这个问题,我实例化了一个克隆对象;
FailedRule failedRule = new FailedRule(rule);
我的 FailedRule 类如下所示:
public class FailedRule extends Rule{
/*
*force a down cast from Rule to FailedRule through cloning
*/
public FailedRule (Rule upcast){
super.setRuleCode( upcast.getRuleCode());
super.setType(upcast.getType());
..
有没有更简单的方法来做这件事? 回答自己,设计是有缺陷的,代码应该是:
public class FailedRule{
private Rule rule;
..
public setRule(Rule rule){
..