2015-12-03 75 views
-1

我有一個abstract類在我的Java項目中調用ClassA。我從ClassA延伸ClassB。現在我想要獲得ClassB的所有字段。當我使用ClassB.getDelaredFields()時,此方法僅獲得classB字段。我可以使用ClassA.getDeclaredFields(),但是當我有幾個層次分歧時,我無法使用它。我想以不正確的方式獲得所有的領域。怎麼樣?如何獲取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() 
相關問題