2015-12-03 2 views
-1

У меня есть класс abstract под названием ClassA в моем проекте java. I распространяется ClassB от ClassA. Теперь я хочу получить все поля ClassB. Когда я использую ClassB.getDelaredFields(), этот метод получает только classB полей. Я могу использовать ClassA.getDeclaredFields(), но когда у меня есть несколько иерархических классов, я не могу их использовать. Я хочу получить все поля dymcmically. Как?Как получить поля полей иерархии классов java?

+0

Вы можете оставить свой код? так что все могут знать точный сценарий? –

+0

повторите все суперклассы и добавьте их объявленные поля до тех пор, пока суперкласс не станет java.lang.Object –

+0

'Class.getFields()' только получить статические поля –

ответ

0

Вы можете использовать GetFields(), вот пример:

public class Generic { 
    public class SuperA { 
     public int f0; 
    } 

    public class A extends SuperA{ 
     public int f; 
    } 

    public class B extends A { 

    } 

    public static void main(String[] args) { 
     Field[] fields = B.class.getFields(); 

     for(Field f: fields) { 
      System.out.println(f.getName()); 
     } 
    } 
} 
+0

Предполагаемые поля будут 'public'. –

0

общественные переменные (из класса и наследуется):

Field[] fields = yourclass.getFields(); 

каждые переменные не наследуется, государственные и частные:

Field[] fields2 = yourclass.getDeclaredFields(); 

чтобы получить унаследованный, защищенный (что вы можете с ними делать?), Итерации через суперкласс

yourclass.getSuperclass()