SORU
25 HAZİRAN 2009, PERŞEMBE


Kalıtsal öznitelik adlarını alma/Java Yansıma değerlerini kullanarak

Java bir nesne gördüm 'uzatıldı'''. ParentObj ChildObj Eğer tüm öznitelik adlarını ve ChildObj değerleri, kalıtsal özellikleri gibi almak mümkün de, Java yansıma mekanizması kullanıyor.

Class.getFields bana ortak öznitelikleri dizisini verir, ve Class.getDeclaredFields bana tüm alanları bir dizi verir, ama bunların hiçbiri miras alanları listesi içerir.

Kalıtsal özellikler de almak için herhangi bir yolu var mı?

CEVAP
25 HAZİRAN 2009, PERŞEMBE


hayır, bunu kendiniz yazmanız gerekir. Basit bir özyinelemeli yöntemi Class.getSuperClass() denir:

public static List<Field> getAllFields(List<Field> fields, Class<?> type) {
    fields.addAll(Arrays.asList(type.getDeclaredFields()));

    if (type.getSuperclass() != null) {
        fields = getAllFields(fields, type.getSuperclass());
    }

    return fields;
}

@Test
public void getLinkedListFields() {
    System.out.println(getAllFields(new LinkedList<Field>(), LinkedList.class));
}

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • Ben Schoon

    Ben Schoon

    23 Kasım 2012
  • DigitalRev TV

    DigitalRev T

    30 AĞUSTOS 2007
  • VOICE TV

    VOICE TV

    2 Aralık 2010