私の現在のプロジェクトのコンテキストでは、次のようなものを実装するよう求められます。
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 のゲッター/セッターを配置するポイントは何ですか? なぜ C のゲッター/セッターを保持しないので、実装で役に立たないゲッター/セッターを実装する必要がなくなるのでしょうか?
私が言われている議論は、私たちはこのようにするのに慣れているので、私たちはこのようにやっているということです.
そのため、メソッドでタイプ I (インターフェース) のオブジェクトを処理するときは、常に null チェックを行う必要があります。