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

  • cyriak

    cyriak

    29 Mart 2006
  • picster

    picster

    20 NİSAN 2006
  • spyib

    spyib

    9 Ocak 2007