2013-05-17 44 views
1

我有許多從相同基類型派生的類。基本類型包含子類共有的所有成員。當子類被實例化時,我需要通過反射來訪問其成員。我需要訪問每個子類的所有成員,但我需要將存在於基類中的那些成員與子類中存在的成員隔離。例如:在java中使用反射訪問子類和超類的屬性

public abstract class mainBaseClass{ 
    public String firstname; 
    public String lastname; 
} 
public class subClass extends mainBaseClass{ 
    public String property1; 
    public String property2; 
} 

我訪問的成員如下:

Field[] fields = objectName.getClass().getFields(); 
for(Field f : fields){ 
    Log.d("FIELD NAME", f.getName()); 
} 

當我使用反射來揭露載於「子類」的一個實例的屬性我將如何區分「名字」和「姓氏'從'property1'和'property2'?

我不知道如何實現這一點。有人可以提供一個解決方案或可能看一個地方?謝謝! Vivian

回答

2

改爲使用Class#getDeclaredFields()Java-Doc

返回Field對象反映此 Class對象所表示的類或接口聲明的所有字段 的陣列。這包括公共,受保護的,默認 (包)訪問和私有字段,但排除了繼承字段。

+0

有沒有一種方法只返回基類的成員? – Pheepster

+1

'class.getSuperclass()。getDeclaredFields()',不要忘記檢查superClass是否爲空 – hoaz