在我当前项目的上下文中,我被要求实现这样的东西:
interface I {
getA():String;
setA(String);
getB():String;
setB(String);
...
getE():String;
setE(String);
}
class I1 implements I {
// These are basic getters/setters for A, B and C.
getA(){}
setA(String){}
getB():String{}
setB(String){}
getC():String{}
setC(String){}
@Deprecated
getD(){
return null;
}
@Deprecated
setD(String d) {
// Does nothing.
}
@Deprecated
getE(){
return null;
}
@Deprecated
setE(String e) {
// Does nothing.
}
}
class I2 implements I {
// These are basic getters/setters for C, D and E.
getC(){}
setC(String){}
getD():String{}
setD(String){}
getE():String{}
setE(String){}
@Deprecated
getA(){
return null;
}
@Deprecated
setA(String a) {
// Does nothing.
}
@Deprecated
getB(){
return null;
}
@Deprecated
setB(String b) {
// Does nothing.
}
}
因此,基本上,只有 C 属性对这两种实现都有意义。
在界面中设置 A、B、D 和 E 的 getter/setter 有什么意义?为什么不保留 C 的 getter/setter,这样我们就不必在实现中实现无用的 getter/setter?
我被告知的论点是:我们这样做是因为我们习惯于这样做。
因此,当我们在方法中处理一些类型 I(接口)的对象时,我们必须一直进行 null 检查。