Class<?>
- Java kursu
- İleri seviye
- Ders 25/82
- 5 dk
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
// Class.forName ile String sınıfını bul
// getName ile tam adını al
// throws ClassNotFoundException ekle ve yazdırÖrnek çözüm
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
Class<?> c = Class.____("java.lang.String");
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ı |