gpt4 book ai didi

java - 使用反射使用子类获取父类(super class)字段

转载 作者:行者123 更新时间:2023-12-02 01:26:25 25 4
gpt4 key购买 nike

基本上,我的要求是通过使用反射来获取父类(super class)对象,以便我可以获得字段名称及其值。

所以,我有一个类

Class Emp {
private firstName;
priavte lastName;
}

Class Dept extend Emp {
private dpFirstName;
priavte dpLastName;
}

现在正在使用

emp.getClass.getSuperClass

这给了我 Dept 类的 java.lang.Class 类型现在,当我尝试使用以下代码访问该字段时。

Class<?> fields = emp.getClass.getSuperClass;
for (Field field : fields.getDeclaredFields()) {
field.setAccessible(true);
System.out.println(field.get(emp.getClass.getSuperClass));
}

它引发了我的异常

Can not set java.lang.String field com.Dept.dpFirstName to java.lang.Class

任何人都可以帮助我如何将其转换为对象,以便我可以访问该文件

最佳答案

public class Emp {

private String firstName;
private String lastName;
}

public class Dep extends Emp{

private String dpFirstName;
private String dpLastName;
}

public class Main {

public static void main(String[] args) throws Exception {
Dep d = new Dep();

Class<?> c = d.getClass().getSuperclass();

for (Field field : c.getDeclaredFields()) {
field.setAccessible(true);
if(field.getName().equals("firstName")){
field.set(d, "First Name");
}
if(field.getName().equals("lastName")){
field.set(d, "Last Name");
}
System.out.println(field.getName() + "\t" + field.get(d));

}

}
}

关于java - 使用反射使用子类获取父类(super class)字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56851948/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com