我有以下课程:
public class GeneralClass
{
public int x;
public int[] arr = new int[3];
}
以下逻辑:
public void loadClass(Class cls) {
Field[] fields = cls.getDeclaredFields();
for (Field field : fields) {
if (field.getType().isArray()) {
// How can I print the array length ?
}
}
}
我怎么知道数组的大小(长度)是多少?
答案 0 :(得分:8)
您可以使用Array.getLength
,但是您需要提供一个具体的实例,以便我使用cls.newInstance()
(它假设有一个无参数构造函数)<\ n < / p>
public static void loadClass(Class<?> cls) throws IllegalArgumentException, IllegalAccessException, InstantiationException {
Field[] fields = cls.getDeclaredFields();
for (Field field : fields) {
if (field.getType().isArray()) {
int length = Array.getLength(field.get(cls.newInstance()));
System.out.println(length);
}
}
}
请注意,如果该字段是静态的,您可以在类级别获取它,因此int length = Array.getLength(field.get(null));
可以正常工作。
答案 1 :(得分:2)
数组字段arr
属于该类的实例,因此其长度不能由通过反射获得的Field
对象确定,因为这实际上是类级元数据。
答案 2 :(得分:0)
简单
System.out.println(field.length);
答案 3 :(得分:0)
查找数组长度的方法是fields.length
答案 4 :(得分:-1)
数组长度相当容易。它是
arrayName.length
所以你可以说:
System.out.print( "length is " + arr.length );