getFields
- Java kursu
- İleri seviye
- Ders 26/82
- 5 dk
getFields ile alan listesini öğrenirsin.
getFields ile alanları bulma
Class.getFields(), sınıfın tüm public alanlarını döndürür; bu, üst sınıflardan gelenleri de kapsar. Her alan bir Field nesnesi olarak temsil edilir.
Örnek: Field[] fields = Person.class.getFields(). Dönen dizide her öğe için f.getName() alan adını, f.getType() türünü verir. Yalnızca sınıfın kendi alanlarını istiyorsan getDeclaredFields kullanırsın; bu, private olanları da içerir.
Alan değerlerini okuma
Bir Field nesnesinin değerini okumak için get(obj) kullanılır. obj, alanın bulunduğu örnektir; statik alanlar için null verilebilir.
Örnek: Object value = f.get(person). Bu, person örneğindeki f alanının değerini verir. Private alanlara erişmek için f.setAccessible(true) çağrısı gerekir; aksi halde IllegalAccessException fırlatılır. Bu, kütüphanelerin gizli alanları test etmesinin yaygın yoludur.
Uygulama Person sınıfının public alanlarını say
Bir Person sınıfı tanımla; içinde public String name ve public int age alanları olsun. Person.class.getFields() ile alanları bir Field[] dizisine al ve length özelliğini System.out.println ile yazdır.
Başlangıç kodu
import java.lang.reflect.Field;
// Person sınıfını tanımla (public name ve age)
// Person.class üzerinde getFields ile alanları al
// length özelliğini yazdırÖrnek çözüm
import java.lang.reflect.Field;
class Person {
public String name;
public int age;
}
public class PersonFields {
public static void main(String[] args) {
Field[] fields = Person.class.getFields();
System.out.println(fields.length);
}
}Beklenen çıktı
2
Soru ve cevaplar
Dersin sorularını cevaplarıyla birlikte inceleyebilirsin. Kendini denemek istersen dersi interaktif olarak çöz.
1 Field yöntemlerini eşleştir
| Kavram | Anlamı |
|---|---|
getFields |
Public alanlar |
getDeclaredFields |
Tüm bildirilenler |
getName |
Alan adı |
getType |
Alan türü |
2 Hangi yöntem yalnızca public alanları, üst sınıflardan gelenleriyle birlikte döndürür?
- getDeclaredFields
- getFields Doğru cevap
- getMethods
- getClasses
Açıklama: getFields public olanları, miras alınanlarla beraber verir.
3 getFields çağrısını tamamla
Field[] fields = clazz.____();
Field[] fields = clazz.getFields();
Açıklama: getFields public alanları döndürür.