我想迫使某個對象不高興,但不知道什麼是正確的方法。 用例是我有一個檢查規則的列表,以及將生成失敗規則列表的內容。失敗的規則是規則的子類。但向下傾斜如
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