Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/350.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用反射访问java中的子类和超类的属性_Java_Reflection - Fatal编程技术网

使用反射访问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()
,请不要忘记检查超类是否为空