我正在做大学项目。
我需要从课堂上获取所有字段。甚至私人和继承。我试图获取所有声明的字段,然后转换为超类并重复。我的代码片段:
private void listAllFields(Object obj) {
List<Field> fieldList = new ArrayList<Field>();
while (obj != null) {
fieldList.addAll(Arrays.asList(obj.getClass().getDeclaredFields()));
obj = obj.getClass().getSuperclass().cast(obj);
}
// rest of code
但它不起作用。tmpObj
转换后仍然是同一个类(不是超类)。
对于如何解决投射问题或如何以不同方式检索这些字段,我将不胜感激。
问题不是获得对字段的访问权限,而是获得字段的名称!
我是这样管理的:
private void listAllFields(Object obj) {
List<Field> fieldList = new ArrayList<Field>();
Class tmpClass = obj.getClass();
while (tmpClass != null) {
fieldList.addAll(Arrays.asList(tmpClass .getDeclaredFields()));
tmpClass = tmpClass .getSuperclass();
}
// rest of code