public Field[] getFields() throws SecurityException
Tüm erişilebilir ortak alanları yansıtan Alan nesnelerini içeren bir dizi döndürürBu Class nesnesi tarafından temsil edilen sınıfın veya arabirimin . Döndürülen dizideki öğeler sıralanmaz ve belirli bir sırada değildir. Sınıf veya arabirimin erişilebilir ortak alanları yoksa veya bir dizi sınıfını, ilkel türü veya boşluğu temsil ediyorsa, bu yöntem 0 uzunluğunda bir dizi döndürür.
Özellikle, bu Class nesnesi bir sınıfı temsil ediyorsa, bu yöntem döndürür bu sınıfın ve tüm üst sınıflarının ortak alanlarını . Bu Class nesnesi bir arabirimi temsil ediyorsa, bu yöntem bu arabirimin ve tüm üst düzeylerinin alanlarını döndürür.
Dizi sınıfı için örtük uzunluk alanı bu yöntemle yansıtılmaz. Kullanıcı kodu, dizileri işlemek için Array sınıfı yöntemlerini kullanmalıdır.
public Field[] getDeclaredFields() throws SecurityException
Bu Class nesnesi tarafından temsil edilen sınıf veya arabirim tarafından bildirilen tüm alanları yansıtan bir Field nesneleri dizisi döndürür . Bu , genel, korumalı, varsayılan (paket) erişimi ve özel alanları içerir, ancak devralınan alanları hariç tutar . Döndürülen dizideki öğeler sıralanmaz ve belirli bir sırada değildir. Sınıf veya arabirim alan bildirmezse veya bu Sınıf nesnesi ilkel bir türü, bir dizi sınıfını veya void'i temsil ediyorsa, bu yöntem 0 uzunluktaki bir diziyi döndürür.
Ve tüm üst sınıflardan tüm alanlara ihtiyacım olursa? Bazı kodlar gereklidir, örneğin https://stackoverflow.com/a/35103361/755804 adresinden :
public static List<Field> getAllModelFields(Class aClass) {
List<Field> fields = new ArrayList<>();
do {
Collections.addAll(fields, aClass.getDeclaredFields());
aClass = aClass.getSuperclass();
} while (aClass != null);
return fields;
}
getField
üst sınıftan devralınan bir alanı alabilir, ancakgetDeclaredField
alamaz.getDeclaredField
kendisini işlevi çağırdığınız sınıfla sınırlandırır.