これが私が今直面している私の問題です。たとえば、クラスがあり、このクラスはインスタンスを返すというFoo
メソッドを定義します。クラスは内部で定義され、宣言されています。私がやりたいのは、拡張するクラスを定義することですが、独自の機能(メソッド、プロパティなど)を追加して拡張することもできます。私も戻りたいです。getBar
Bar
Bar
Foo
public static final
MyFoo
Foo
Bar
MyBar
getBar
MyBar
問題はBar
最終的なものです。これが私がやりたいことのイラストです:
public class Foo {
Bar bar = new Bar();
public Bar getBar(){
return bar;
}
....
public static final class Bar {
}
}
私がしたいのは:
public class MyFoo extends Foo {
public MyBar getBar(){ // here I want to return an instance of MyBar
}
public static final class MyBar extends Bar { // That's impossible since Bar is final
}
}
どうすればそれを達成できますか?
[編集]質問に詳細を追加しています。私は実際にJenkinsのプラグインを開発していますが、検索したところ、やりたい基本機能を提供するプラグインがあることに気付きましFoo
たBar
。Foo
私はカスタムしたいBar
ので、それは私のニーズに合うことができます。Fooはプラグインのメインクラスであり、Builderと呼ばれるクラスを拡張します。perform
Fooは、ビルドを実行するためのすべての操作を含む
というメソッドを定義します。Bar
構成目的の操作が含まれており、Fooはそれらの情報を取得するためにBarを必要とします。
だから私がやりたいのは、Fooを拡張しMyFoo
、でいくつかの構成を追加することMyBar
です。ご覧MyFoo
のとおり、これらの構成を呼び出す必要がありますgetBar();
MyFoo
2つ目は、とのインスタンス化を制御できないことです。MyBar
私を阻んでいるのは、バーを拡張できないことです。どうすればそれを達成できますか?