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

  • EmmightySofia

    EmmightySofi

    25 EYLÜL 2011
  • kev5124

    kev5124

    9 Kasım 2008
  • SDSARG3

    SDSARG3

    14 Mart 2009