我想对一个不能被向下投射的对象强制进行向下转换,并且想知道正确的方法是什么。用例是我有一个检查的规则列表以及生成失败规则列表的内容。失败的规则是规则的子类。但是像
FailedRule failedRule = (FailedRule) rule;
将失败,因为规则对象不是 FailedRule 的实例
为了解决这个问题,我实例化了一个克隆;
FailedRule failedRule = new FailedRule (规则);
我的 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){
..