这个问题已经在这里有一个答案:
- Java反射getFields的私有成员| 访问对象名称值动态地 2个答案
我想获得在特定类的字段数。 不过我用的是不工作,始终将技术返回0:
this.getClass().getFields().length;
如何获取特定类的字段计数?
这个问题已经在这里有一个答案:
我想获得在特定类的字段数。 不过我用的是不工作,始终将技术返回0:
this.getClass().getFields().length;
如何获取特定类的字段计数?
使用this.getClass().getDeclaredFields().length
的getFields
方法是访问公共字段-见文档 。
getFields()
只返回可公开访问的领域。 机会是,你的类的字段由getter和setter包裹。
您可能需要使用getDeclaredFields()
来代替。 这将返回所有领域,无论知名度。
从Class#getFields
的JavaDoc:
返回包含反映此Class对象所表示的类或接口的所有可访问的公共字段 Field对象的数组。
也许你的字段声明为private
或protected
,因此永远不会让你的类字段的正确数量。 你应该使用Class#getDeclaredFields
返回Field对象反映此Class对象所表示的类或接口声明的所有字段的数组。 这包括公共,保护,默认(包)访问和私有字段 ,但不包括继承的字段。