CodeBlanks Logo Icon CodeBlanks

getFields

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

Main.java
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

Main.java
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

Soru
Field[] fields = clazz.____();
Cevap
Field[] fields = clazz.getFields();

Açıklama: getFields public alanları döndürür.

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