我正在尝试获取特定类中的字段数。但是我使用的技术不起作用并且始终返回0:
this.getClass().getFields().length;
如何获取特定班级的字段数?
答案 0 :(得分:13)
使用this.getClass().getDeclaredFields().length
getFields
方法适用于可访问的公共字段 - 请参阅documentation。
答案 1 :(得分:1)
getFields()
仅返回可公开访问的字段。可能是,你的班级的领域被吸气者和制定者包裹着。
您可能希望使用getDeclaredFields()
。无论能见度如何,它都将返回所有字段。
答案 2 :(得分:0)
来自Class#getFields
JavaDoc:
返回一个包含Field对象的数组,该对象反映此Class对象所代表的类或接口的所有可访问公共字段。
也许您的字段被声明为private
或protected
,因此永远无法在您的课程中获得正确数量的字段。您应该使用Class#getDeclaredFields
返回Field对象的数组,这些对象反映由此Class对象表示的类或接口声明的所有字段。这包括公开,受保护,默认(包)访问和私有字段,但不包括继承的字段。