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

时间:2013-05-09 14:37:01

标签: java reflection count field

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

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

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

3 个答案:

答案 0 :(得分:13)

使用this.getClass().getDeclaredFields().length getFields方法适用于可访问的公共字段 - 请参阅documentation

答案 1 :(得分:1)

getFields()仅返回可公开访问的字段。可能是,你的班级的领域被吸气者和制定者包裹着。

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

答案 2 :(得分:0)

来自Class#getFields JavaDoc:

  

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

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

  

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