Назад к вопросам
Aston
Junior — Middle
59
Передаётся ли Proxy объект в качестве аргумента метода?
Компании, где спрашивали
Ответ от нейросети
sobes.tech AI
Да, Proxy объект в Java может передаваться в качестве аргумента метода так же, как и любой другой объект. Proxy — это динамически созданный объект, который реализует заданные интерфейсы и перехватывает вызовы методов. При передаче Proxy в метод он ведёт себя как обычный объект, но вызовы методов будут обрабатываться через InvocationHandler, что позволяет реализовать дополнительные логики (например, логирование, проверку прав и т.п.).
Пример:
import java.lang.reflect.*;
interface Service {
void execute();
}
class RealService implements Service {
public void execute() {
System.out.println("Выполнение реального сервиса");
}
}
class ProxyHandler implements InvocationHandler {
private final Object target;
public ProxyHandler(Object target) {
this.target = target;
}
public Object invoke(Object proxy, Method method, Object[] args) throws Throwable {
System.out.println("Перед вызовом метода");
Object result = method.invoke(target, args);
System.out.println("После вызова метода");
return result;
}
}
public class Main {
static void useService(Service service) {
service.execute();
}
public static void main(String[] args) {
Service real = new RealService();
Service proxy = (Service) Proxy.newProxyInstance(
Service.class.getClassLoader(),
new Class<?>[]{Service.class},
new ProxyHandler(real));
useService(proxy); // Proxy передаётся как аргумент
}
}