。this.getClass()getFields()的长度。; 总是返回0

我试图获取特定类中的字段数。 但是,我使用的技术不起作用,并始终返回0:

this.getClass().getFields().length; 

如何获取特定class级的字段数?

使用this.getClass().getDeclaredFields().length getFields方法用于可访问的公共字段 – 请参阅文档 。

getFields()仅返回可公开访问的字段。 机会是,你的class级的领域由吸气者和制定者包裹。

您可能希望使用getDeclaredFields() 。 它将返回所有字段,无论可见性如何。

来自Class#getFields JavaDoc:

返回一个包含Field对象的数组,这些对象反映此Class对象所表示的类或接口的所有可访问公共字段

也许您的字段被声明为privateprotected ,因此永远不会在您的类中获得正确数量的字段。 你应该使用Class#getDeclaredFields

返回Field对象的数组,这些对象反映由此Class对象表示的类或接口声明的所有字段。 这包括公共,受保护,默认(包)访问和私有字段 ,但不包括inheritance的字段。