Ответ 1
Создать оболочку для окончательного класса?
Что-то вроде этого:
class MyClass {
private FinalClass finalClass;
public MyClass {
finalClass = new FinalClass():
}
public void delegatingMethod() {
finalClass.delegatingMethod();
}
}
Класс оболочки, такой как MyClass
, не будет принят в качестве экземпляра FinalClass
. Если FinalClass
реализует любые интерфейсы, вы можете реализовать их в MyClass
, чтобы сделать классы более похожими. То же самое относится к любым родителям-неконфигурированным FinalClass
; в этом случае ваш дизайн MyClass
должен быть совместим с этими родительскими классами.
Можно даже создать класс оболочки во время выполнения, используя отражение. В этом случае вы можете использовать класс Proxy
. Остерегайтесь того, что для прокси-классов требуется глубокое знание системы Java-типа.