java if 重构_java – 重构巨大的if(… instanceof …)

我目前正在尝试重构一个看起来像这样的项目的一部分:

很多班

B extends A; C extends A; D extends C; E extends B; F extends A; ...

在代码的某处:

if (x instanceof B){

B n = (B) x;

...

}else if (x instanceof C){

C n = (C) x;

...

}else if (x instanceof D){

D n = (D) x;

...

}else if (x instanceof E){

E n = (E) x;

...

}else if (x instanceof G){

G n = (G) x;

...

}...

上面的if-construct目前位于一个CC为19的函数中.现在我的问题是:我可以将这个if-construct拆分为多个函数并让Java的OO做出魔术吗?或者有什么捕获我需要注意的?

我的想法:

private void oopMagic(C obj){ ... Do the stuff from the if(x instanceof C) here}

private void oopMagic(D obj){ ... Do the stuff from the if(x instanceof D) here}

private void oopMagic(E obj){ ... Do the stuff from the if(x instanceof E) here}

....

而不是巨大的if:

oopMagic(x);

编辑:我无法更改任何类(A,B,C,…).在if语句中,一些getter用于从每个对象读取(从不写入)数据.

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值