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

  • Flohoo

    Flohoo

    12 EYLÜL 2009
  • Paulo Bautista

    Paulo Bautis

    21 Aralık 2008
  • Visual Life

    Visual Life

    3 Temmuz 2006