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

  • Microsoft Research

    Microsoft Re

    24 EKİM 2008
  • TheDamnWreckless

    TheDamnWreck

    12 Temmuz 2010
  • Theodore Leaf

    Theodore Lea

    29 AĞUSTOS 2006