ダウンキャストできないオブジェクトにダウンキャストを強制したいのですが、正しいアプローチは何だろうと思っていました。ユースケースは、チェックされたルールのリストと、失敗したルールのリストを生成するものがあるということです。失敗したルールは、ルールのサブクラスです。ただし、FailedRule のようなダウンキャストは
failedRule = (FailedRule) rule;
ルール オブジェクトが FailedRule のインスタンスではないため、失敗します。
これを回避するために、クローンをインスタンス化します。
FailedRule failedRule = 新しい 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){
..