Sobes.tech
Junior — Middle

Proksi qoʻllangandan soʻng ob'ektning asl metodini qanday chaqirish mumkin?

sobes.tech AI

AIdan javob

Java'da, agar siz dinamik proxy (masalan, java.lang.reflect.Proxy orqali) foydalanayotgan bo'lsangiz, ob'ektning metod chaqiruvi InvocationHandler implementatsiyasi orqali amalga oshiriladi. Proxy qo'llanilgandan so'ng ob'ektning asl metodini chaqirish uchun, invoke metodining ichida, proxy qilinayotgan asl ob'ekt ustida mos metodni aniq chaqishingiz kerak.

Misol:

public class MyInvocationHandler implements InvocationHandler {
    private final Object original;

    public MyInvocationHandler(Object original) {
        this.original = original;
    }

    @Override
    public Object invoke(Object proxy, Method method, Object[] args) throws Throwable {
        // Chaqarishdan oldin qo'shimcha mantiq qo'shish mumkin
        System.out.println("Metod chaqiruvi oldidan");

        // Asl ob'ekt ustida asl metodni chaqirish
        Object result = method.invoke(original, args);

        // Chaqarishdan keyin qo'shimcha mantiq qo'shish mumkin
        System.out.println("Metod chaqiruvi keyin");

        return result;
    }
}

Shu tarzda, proxy chaqiruvni ushlab qoladi va invoke ichida, method.invoke(original, args) orqali asl metodni chaqirasiz.