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

2019-09-02 09:10发布

这个问题已经在这里有一个答案:

  • Java反射getFields的私有成员| 访问对象名称值动态地 2个答案

我想获得在特定类的字段数。 不过我用的是不工作,始终将技术返回0:

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

如何获取特定类的字段计数?

Answer 1:

使用this.getClass().getDeclaredFields().lengthgetFields方法是访问公共字段-见文档 。



Answer 2:

getFields()只返回可公开访问的领域。 机会是,你的类的字段由getter和setter包裹。

您可能需要使用getDeclaredFields()来代替。 这将返回所有领域,无论知名度。



Answer 3:

Class#getFields的JavaDoc:

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

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

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



文章来源: this.getClass().getFields().length; always returns 0 [duplicate]