Вот моя проблема, с которой я сейчас сталкиваюсь.
У меня есть класс, скажем 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 impossible since Bar is final
}
}
Как я могу это достичь?
[EDIT] Я добавляю более подробные сведения к моему вопросу.
Я действительно разрабатываю плагин для Jenkins и после поиска, я понимаю, что есть плагин, который предлагает базовые функции, которые я хочу сделать, Foo
и Bar
. Я хочу настроить Foo
и Bar
, чтобы он соответствовал моим потребностям.
Foo является основным классом плагина и расширяет класс Builder. Foo определяет метод под названием perform
, который содержит все операции для выполнения сборки.
Bar
содержит операции для целей конфигурирования, а Foo - это Bar для получения этих сведений.
Итак, что я хочу сделать, это расширить Foo с помощью MyFoo
и добавить некоторые конфигурации с помощью MyBar
. И, как вы видите, MyFoo
нужно будет получить эти конфигурации, вызвав getBar();
Во-вторых, я не контролирую instanciation MyFoo
и MyBar
Что блокирует меня, я не могу расширить Bar. Как я могу это достичь?