Встречается на собеседованиях • сегодня

Можно ли класс А проксировать классом В

Да, можно. В Java для проксирования класса можно использовать java.lang.reflect.Proxy (только для интерфейсов) или библиотеки вроде CGLIB/ByteBuddy (для классов без интерфейсов). Пример с CGLIB:

java
class A { void foo() { System.out.println("Original"); } }

class B implements MethodInterceptor {
    @Override
    public Object intercept(Object obj, Method method, Object[] args, MethodProxy proxy) throws Throwable {
        System.out.println("Before");
        Object result = proxy.invokeSuper(obj, args);
        System.out.println("After");
        return result;
    }
}

// Создание прокси
Enhancer enhancer = new Enhancer();
enhancer.setSuperclass(A.class);
enhancer.setCallback(new B());
A proxyA = (A) enhancer.create();
proxyA.foo(); // Выведет: Before -> Original -> After

text

Ограничения: 
1. Нельзя проксировать final-классы/методы
2. Конструктор родителя вызывается дважды
3. Требуются внешние библиотеки (не входит в стандартный JDK)
Sophi
Софи собрала все вопросы. Тренируйся и получай
офферы быстрее!
Попробовать бесплатноArrow

Следующий вопрос

Это единственный вопрос по вашему фильтру

как отвечать на вопрос
пример собеседования
фреймворки на собеседовании
типичные вопросы junior
интервью вопросы и ответы