CodeBlanks Logo Icon CodeBlanks

invoke

Method.invoke ile dinamik çağrıyı öğrenirsin.

Method.invoke ile çağrı

Bir Method nesnesini çalışma anında çağırmak için invoke kullanılır. İlk parametre hedef örnek, sonra gelenler yöntemin parametreleridir.

Örnek: Object result = m.invoke(target, args). Burada target yöntemin çağrılacağı örnek, args ise parametreler dizisidir. Statik yöntemler için target null olabilir. Dönüş değeri Object olarak döner; gerekiyorsa cast edilir.

Private yöntemleri çağırma

Private bir yöntemi çağırmak için önce setAccessible(true) gerekir. Bu, erişim denetimini atlatır; böylece invoke çalışır.

Örnek: m.setAccessible(true); m.invoke(target). Bu desen, kütüphane ve test kodlarında gizli yöntemlere erişmek için kullanılır. Modül sisteminde bazı kısıtlamalar olsa da, tek dosyalık uygulamalarda setAccessible genelde çalışır. Üretim kodunda dikkatli kullanılmalıdır; kapsüllemeyi bozabilir.

Uygulama String.length yöntemini invoke et

"Merhaba" dizgisini bir String değişkenine ata. String.class.getMethod("length") ile length yöntemini bul. m.invoke(s) ile çağır ve sonucu System.out.println ile yazdır. main imzasına throws Exception ekle.

Başlangıç kodu

Main.java
import java.lang.reflect.Method;

// "Merhaba" dizgisini String değişkenine ata
// getMethod ile length yöntemini bul
// invoke ile çağır ve sonucu yazdır

Örnek çözüm

Main.java
import java.lang.reflect.Method;

public class InvokeLength {
    public static void main(String[] args) throws Exception {
        String s = "Merhaba";
        Method m = String.class.getMethod("length");
        System.out.println(m.invoke(s));
    }
}

Beklenen çıktı

7

Soru ve cevaplar

Dersin sorularını cevaplarıyla birlikte inceleyebilirsin. Kendini denemek istersen dersi interaktif olarak çöz.

1 invoke çağrısını tamamla

Soru
Object result = method.____(target, args);
Cevap
Object result = method.invoke(target, args);

Açıklama: invoke bir yöntemi çağırır.

2 invoke kavramlarını eşleştir

Kavram Anlamı
invoke Yöntemi çağır
setAccessible Erişimi aç
getMethod Yöntem bul
IllegalAccessException Erişim engeli

3 Erişilemeyen bir yöntem invoke edilince hangi istisna fırlar?

  • NullPointerException
  • ClassCastException
  • IOException
  • IllegalAccessException Doğru cevap

Açıklama: IllegalAccessException erişim engelinde fırlar.

İleri seviye bölümündeki tüm dersler