この質問に適切なタイトルを付ける方法がよくわかりません。できるだけ明確に説明しようと思います:。
Interface InterfaceB {
void methodB();
}
Class ClassB implements InterfaceB {
void methodB() {
//...
}
}
Class ClassA {
InterfaceB methodA() {
return new ClassB();
}
}
Class MyClass {
public static void main(String[] args) {
ClassA a = new ClassA();
InterfaceB b = a.methodA();
b.methodB(); // override this guy
}
}
ClassAとClassBを変更せずにmethodBをオーバーライドしたい。アイデアに感謝します。
これはあなたができることです:
ClassA a = new ClassA() {//extend class A
InterfaceB methodA() {//Override methodA
return new ClassB() {//extend class B
void methodB() {//Override methodB
//...
}
};
}
};
クラスAまたはクラスBを変更せずにmethodBをオーバーライドしました。そうは言っても、実際にはClassAから拡張する必要はありません。を作成しfactory
、それを依存関係としてClassAに渡し、パラメーターを渡して、呼び出しに使用するmethodA
具体的な実装を指示することclassB
ができます。methodB
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加