Встречается на собеседованиях • сегодня
Можно ли класс А проксировать классом В
Да, можно. В 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)
Софи собрала все вопросы. Тренируйся и получай
офферы быстрее!
офферы быстрее!
Попробовать бесплатно
Следующий вопрос
Это единственный вопрос по вашему фильтру
как отвечать на вопрос
пример собеседования
фреймворки на собеседовании
типичные вопросы junior
интервью вопросы и ответы