Java yansıması getFields ve getDeclaredFields arasındaki fark nedir | Netgez.com
SORU
6 HAZÄ°RAN 2013, PERÅžEMBE


Java yansıması getFields ve getDeclaredFields arasındaki fark nedir

getFields yöntem ve Java yansıma kullanırken getDeclaredFields yöntemi arasındaki fark hakkında biraz kafam karıştı.

getDeclaredFields sınıfının tüm alanlara erişim sağlayan ve getFields sadece kamu alanları döndüren okudum. Eğer durum buysa, neden hep getDeclaredFields kullanmak değil mi?

Birisi bunun hakkında biraz bilgi, ve iki yöntem arasında çok büyük bir fark olduğunu, ve ne zaman diğer üzerinde kullanmak istediğiniz neden/lütfen?

CEVAP
6 HAZÄ°RAN 2013, PERÅžEMBE


() getFields

Tüm sınıf hiyerarşisi public tüm alanları.

() getDelcaredFields

Tüm alanları, erişilebilirlik ne olursa olsun amamevcut sınıf mevcut sınıf devralmasını olabilecek tüm temel sınıfları için değil sadece.

Hiyerarşi kadar tüm alanları almak için

Aşağıdaki fonksiyonu yazdım:

public static Iterable<Field> getFieldsUpTo(@Nonnull Class<?> startClass, 
                                   @Nullable Class<?> exclusiveParent) {

   List<Field> currentClassFields = Lists.newArrayList(startClass.getDeclaredFields());
   Class<?> parentClass = startClass.getSuperclass();

   if (parentClass != null && 
          (exclusiveParent == null || !(parentClass.equals(exclusiveParent)))) {
     List<Field> parentClassFields = 
         (List<Field>) getFieldsUpTo(parentClass, exclusiveParent);
     currentClassFields.addAll(parentClassFields);
   }

   return currentClassFields;
}

exclusiveParent sınıfı Object alanları alınmasını önlemek için sağlanmıştır. Eğer varsa Object alanları istiyorsanız null olabilir.

Claify için, Lists.newArrayList Guava geliyor.

Güncelleme

BİLGİNİZE, yukarıdaki kodu ReflectionUtils 13 *benim proje GitHub sitesinde yayınlanmıştır.

Bunu PaylaÅŸ:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VÄ°DEO

Rastgele Yazarlar

  • Canceriansoul

    Canceriansou

    15 Ocak 2011
  • Matt Harding

    Matt Harding

    23 Mayıs 2006
  • Rozetked | Обзоры

    Rozetked | Ð

    5 AÄžUSTOS 2011