为什么Application.class.getDeclaredFields()什么都不返回?

时间:2014-09-15 18:31:59

标签: android reflection

有人可以解释为什么Application.class.getDeclaredFields()什么都不返回?

Field [] fields = Application.class.getDeclaredFields();

调用后,Field对象为空。 java.lang.reflect中是否有任何限制可以阻止此调用返回null以外的任何内容?

谢谢

1 个答案:

答案 0 :(得分:1)

这不是反射的限制,而是Reflection API的预期行为。

  

getDeclaredFields返回.. 声明的所有字段 ..但排除了继承的字段

     

getFields返回此类及其所有超类的公共字段

android.app.Application通过版本2.3.7声明没有字段 - 也就是说,继承了中的所有字段。因此,在这样的环境中getDeclaredFields的结果是空数组是恰当的。

版本4.x 添加标有@hide的字段(或字段);这些仍应be accessible via reflection even if not listed in the javadoc/droiddoc output。在这种情况下,getDeclaredFields应返回相关的非继承字段。