使用反射访问java中的子类和超类的属性

时间:2013-05-17 16:15:48

标签: java reflection

我有许多派生自相同基类型的类。基类型包含子类共有的所有成员。当实例化子类时,我需要通过反射访问其成员。我需要访问每个子类的所有成员,但我需要将基类中存在的成员与子类中存在的成员隔离开来。例如:

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());
}

当我使用反射来公开“subClass”实例中包含的属性时,如何区分'first1'和'lastname'与'property1'和'property2'?

我不确定如何实现这一点。有人可以提供解决方案或者可以寻找一个地方吗?谢谢!维维

1 个答案:

答案 0 :(得分:2)

请改用Class#getDeclaredFields()Java-Doc

返回反映所有字段的Field个对象数组 由此类表示的类或接口声明 Class对象。这包括公共,受保护,默认 (包)访问权限和私有字段但不包括继承的字段。