我的A班有

   AClaz[] rofl;


getDeclaredFields的文档说:“如果类或接口未声明任何字段,或者此Class对象表示原始类型,数组类或void,则此方法返回长度为0的数组。”

我想使用反射访问AClaz类型的rofl数组。即使AClaz是A类的内部类。

所以我会做getDeclaredClass吗?

最佳答案

您误读了文档-谈论的是在数组类上调用getDeclaredFields,如下所示:

Class<?> arrayClass = String[].getClass();
Field[] fields = arrayClass.getDeclaredFields();


您应该可以使用A毫无问题地使用该字段

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


然后遍历数组,或者

Field roflField = A.class.getDeclaredField("rofl");


字段类型是数组这一事实根本不是问题。

09-11 19:21