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