Junior — Middle
Kas Proxy objekt edastatakse meetodi argumentina?
sobes.tech AI
Vastus AI-lt
Jah, Java-da Proxy obyekti, digər hər hansı obyekt kimi, metodun arqumenti kimi ötürülə bilər. Proxy, müəyyən interfeysləri həyata keçirən və metod çağrılarını ələ keçirən dinamik yaradılmış obyektdir. Proxy, metoda ötürüldükdə, o, adi obyekt kimi davranır, lakin metod çağrıları InvocationHandler vasitəsilə işlənir, bu da əlavə loqika (məsələn, qeydiyyat, icazə yoxlaması və s.) həyata keçirməyə imkan verir.
Nümunə:
import java.lang.reflect.*;
interface Service {
void execute();
}
class RealService implements Service {
public void execute() {
System.out.println("Həqiqi xidməti icra edir");
}
}
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("Metod çağırılmadan əvvəl");
Object result = method.invoke(target, args);
System.out.println("Metod çağırıldıqdan sonra");
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 arqument kimi ötürülür
}
}