Java Same方法签名不同的实现

时间:2013-10-08 13:50:11

标签: java

我有一个java类ClassA,其字段和方法为

boolean isAvail;
String field1;

public String setField1(String field1) {
    this.field1 = field1;
}

public boolean isAvail() {
    return isAvail;
}

但是,根据业务需求,我需要将方法实现为

public String setField1(String bCode) {
    if (isAvail) {
        field1 = bcode;
    }
    else {
        field1 = "XYZ";
    }
}

我想保留早期的setField1,因为这个类被其他类使用,可能需要更早的方法。

我知道拥有相同的方法签名是不可行的,但任何人都可以提供有关如何以有效方式解决此问题的见解。

1 个答案:

答案 0 :(得分:4)

您可以使用自定义子类扩展当前类,然后覆盖setField1方法:

public class SubClass extends CurrentClass {

    @Override
    public String setField1(String bCode) {
        if (isAvail()) {
            return super.setField1(bCode);
        } else {
            return super.setField1("XYZ");
        }
    }

}

使用SubClass满足新要求,让旧类像以前一样使用CurrentClass。