Подтвердить что ты не робот

Эквивалентно расширению конечного класса в Java

Я знаю, что в Java мы не можем продлить окончательный класс. Но есть ли альтернативный способ, с помощью которого я могу получить окончательный класс?

Потому что у меня есть последний класс с требованиями, которые я ищу, поэтому, если каким-то образом я смогу его повторно использовать, это будет очень полезно для меня.

4b9b3361

Ответ 1

Создать оболочку для окончательного класса?

Что-то вроде этого:

class MyClass {
    private FinalClass finalClass;

    public MyClass {
        finalClass = new FinalClass():
    }

    public void delegatingMethod() {
        finalClass.delegatingMethod();
    }
}

Класс оболочки, такой как MyClass, не будет принят в качестве экземпляра FinalClass. Если FinalClass реализует любые интерфейсы, вы можете реализовать их в MyClass, чтобы сделать классы более похожими. То же самое относится к любым родителям-неконфигурированным FinalClass; в этом случае ваш дизайн MyClass должен быть совместим с этими родительскими классами.

Можно даже создать класс оболочки во время выполнения, используя отражение. В этом случае вы можете использовать класс Proxy. Остерегайтесь того, что для прокси-классов требуется глубокое знание системы Java-типа.

Ответ 2

Простейшим вариантом было бы написать оболочку, которая содержит экземпляр конечного класса в качестве переменной-члена и действует как прокси-сервер для конечного класса.

Таким образом, легко переопределить или расширить методы конечного класса.