CodeBlanks Logo Icon CodeBlanks

Class<?>

Class<?> ile sınıf meta verisini öğrenirsin.

Class<?> nesnesi

Java'da her türün bir Class<?> nesnesi vardır; bu nesne türe ait bilgileri (alanlar, yöntemler, kurucular) taşır. Reflection işlemleri buradan başlar.

Üç yaygın yol: obj.getClass() örneğin sınıfını, String.class sınıf değişmezini, Class.forName("java.lang.String") ise isimle sınıf nesnesini verir. Üçü de eşdeğer Class nesnesini döndürür; kullanım yerine göre seçilir.

Class üzerinde bilgi alma

Bir Class nesnesi birçok bilgi verir: getName tam adı, getSimpleName kısa adı, getModifiers erişim bayraklarını döndürür.

Örnek: c.getName() çağrısı java.lang.String gibi tam adı verir; c.getSimpleName() ise yalnızca String. Bu yöntemler, çalışma anında tür incelemesi yapmak için kullanılır; örneğin bir çerçeve sınıf adını rapora yazmak isterse doğrudan kullanır.

Uygulama Bir sınıfın tam adını yazdır

Class.forName("java.lang.String") ile String sınıfının Class nesnesini al. getName() ile tam adını System.out.println ile yazdır. main imzasına throws ClassNotFoundException ekle.

Başlangıç kodu

Main.java
// Class.forName ile String sınıfını bul
// getName ile tam adını al
// throws ClassNotFoundException ekle ve yazdır

Örnek çözüm

Main.java
public class ReflectionName {
    public static void main(String[] args) throws ClassNotFoundException {
        Class<?> c = Class.forName("java.lang.String");
        System.out.println(c.getName());
    }
}

Beklenen çıktı

java.lang.String

Soru ve cevaplar

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

1 Bir sınıfı tam adıyla bulan yöntem hangisidir?

  • Class.forName Doğru cevap
  • getClass
  • getFields
  • getMethod

Açıklama: Class.forName bir dizgiyi sınıf adı olarak yorumlar.

2 Class.forName çağrısını tamamla

Soru
Class<?> c = Class.____("java.lang.String");
Cevap
Class<?> c = Class.forName("java.lang.String");

Açıklama: forName bir dizgiyi sınıf adı olarak yorumlar.

3 Class edinme yollarını eşleştir

Kavram Anlamı
obj.getClass() Örneğin sınıfı
String.class Sınıf değişmezi
Class.forName İsimle bul
getName Tam adı

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