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