Я хочу навести объект на объект, который нельзя отбрасывать, и мне было интересно, какой будет правильный подход.Сценарий использования: у меня есть список проверенных правил и список сгенерированных правил.Неудачное правило является подклассом правила.Но уныние, как
FailedRule failedRule = (FailedRule) rule;
завершится ошибкой, поскольку объект правила не является экземпляром FailedRule
Чтобы обойти это, я создаюclone;
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){
..