我想优化使用的代码" BDTO扩展ADTO"而不是复制方法any()在DForm和EForm中创建一个新的类抽象(CForm)以及在哪里放置逻辑方法any()
如何解决重复方法?最佳实践如何?
public class ADTO {
public String a;
public String getA() {return a;}
public void setA(String a) {this.a = a;}
}
public class BDTO extends ADTO{
public String b;
public String getB() {return b;}
public void setB(String b) {this.b = b;}
}
public abstract class CForm {
ADTO aDTO;
// BDTO bDTO;
public ADTO getADTO() {return aDTO;}
public void setADTO(ADTO aDTO){this.aDTO = aDTO;}
// public BDTO getbDTO() {return bDTO;}
// public void setbDTO(BDTO bDTO) {this.bDTO = bDTO;}
public void any() {//
aDTO.getA(); //
} //
// how resolve duplicate method ?
//public void any(){ // when i use only attribute aDTO and run any1() in EForm, aDTO is null
// bDTO.getA(); //
//}
}
public class DForm extends CForm {
public void anyD(){
getADTO().setA("test");
any(); // run method here is ok
}
}
public class EForm extends CForm{
//form using here any() and BDTO
public void anyE(){
getADTO().setA("test");
any(); //run method here aDTO is null, why?
}
}
答案 0 :(得分:0)
Java不允许重复的方法(至少不是你想要的)。
你可以做些什么(我认为这就是你的意图):你可以制作一个any()
方法随机调用aDTO.getA()
或bDTO.getB()
或选择任何可用的方法并运行那一个。
你的any()方法看起来像这样(随机):
public void any() {
if(new Random().nextBoolean())
aDTO.getA();
else
bDTO.getB();
}
或者像这样(第一次可用):
public void any() {
if(aDTO != null)
aDTO.getA();
else if(bDTO != null)
bDTO.getB()
}