使用反射访问java中的子类和超类的属性
我有许多类是从相同的基类型派生的。基类型包含子类共有的所有成员。当实例化子类时,我需要通过反射访问其成员。我需要访问每个子类的所有成员,但我需要将存在于基类中的成员与存在于子类中的成员隔离开来。例如:使用反射访问java中的子类和超类的属性,java,reflection,Java,Reflection,我有许多类是从相同的基类型派生的。基类型包含子类共有的所有成员。当实例化子类时,我需要通过反射访问其成员。我需要访问每个子类的所有成员,但我需要将存在于基类中的成员与存在于子类中的成员隔离开来。例如: public abstract class mainBaseClass{ public String firstname; public String lastname; } public class subClass extends mainBaseClass{ publ
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”实例中包含的属性时,我如何区分“firstname”和“lastname”与“property1”和“property2”
我不知道如何实现这一点。有人能提供一个解决方案,或者找个地方看看吗?非常感谢。Vivian使用类#getDeclaredFields()
:
返回反映所有字段的Field
对象数组
由此表达式表示的类或接口声明
类
对象。这包括公共的、受保护的、默认的
(package)access和private字段,但不包括继承的字段。是否有只返回基类成员的方法?
class.getSuperclass().getDeclaredFields()
,请不要忘记检查超类是否为空