我想迫使某个对象不高兴,但不知道什么是正确的方法。 用例是我有一个检查规则的列表,以及将生成失败规则列表的内容。失败的规则是规则的子类。但向下倾斜如
FailedRule failedRule =(FailedRule)规则;Java中的强制向下转换
将失败,因为该规则的对象不是一个instanceof 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){
..
我想知道你最终不得不对一个不能被击倒的对象强制下注。向我们解释你真正想做的事情。 – 2010-12-03 16:01:18
虽然我做了:-)。我遍历一系列规则并返回失败的规则列表。检查过程为每个规则返回相当数量的信息为什么,何时以及如何失败。马克的回答是正确的,我的设计是错误的,我不能说失败的规则是'规则'。它有一条规则。我编辑了这个问题,因为我不能在这些注释中放置代码 – Meindert 2010-12-06 08:16:38