У меня есть класс abstract
под названием ClassA
в моем проекте java. I распространяется ClassB
от ClassA
. Теперь я хочу получить все поля ClassB
. Когда я использую ClassB.getDelaredFields()
, этот метод получает только classB
полей. Я могу использовать ClassA.getDeclaredFields()
, но когда у меня есть несколько иерархических классов, я не могу их использовать. Я хочу получить все поля dymcmically. Как?Как получить поля полей иерархии классов java?
-1
A
ответ
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()
Вы можете оставить свой код? так что все могут знать точный сценарий? –
повторите все суперклассы и добавьте их объявленные поля до тех пор, пока суперкласс не станет java.lang.Object –
'Class.getFields()' только получить статические поля –