Я пишу библиотеку (wrapperLibrary), которая оборачивает все классы другой библиотеки (зависимой библиотеки), и я хочу, чтобы интеграторы использовали только классы из wrapperLibrary и НЕ из зависимой библиотеки - оборачивая ее полностью.
Я пытаюсь найти способ обернуть ниже абстрактную иерархию зависимой библиотеки:
public abstract class AOT{
// Has few abstract methods and few default method implementation
}
public abstract class AMOT extends AOT {
// Has a new abstract method and few overridden methods
}
public class COTM extends AMOT{
// Implementation class of the abstract hierarchy
}
Оболочка должна выглядеть следующим образом:
public abstract class AOTWrapper{
// Has the default method implementation of AOT
}
public abstract class AMOTWrapper extends AOTWrapper {
// Has the default method implementation of AMOT
}
public class COTMWrapper extends AMOTWrapper{
// Implementation class of the abstract hierarchy
}
Интеграторы или потребителиWrapperLibrary не должен иметь доступа к AOT / AMOT / COTM.
Также другие классы в зависимой библиотеке имеют AOT / AMOT / COTM в качестве параметров метода или возвращаемых типов.Таким образом, мы должны иметь возможность конвертировать AOTWrapper в AOT по мере необходимости.
Как мы можем этого достичь?