我有以下课程:
public class GeneralClass
{
public int x;
public int[] arr = new int[3];
}
Run Code Online (Sandbox Code Playgroud)
以下逻辑:
public void loadClass(Class cls) {
Field[] fields = cls.getDeclaredFields();
for (Field field : fields) {
if (field.getType().isArray()) {
// How can I print the array length ?
}
}
}
Run Code Online (Sandbox Code Playgroud)
我怎么知道数组的大小(长度)是多少?
你可以使用Array.getLength,但是你需要提供一个具体的实例,这就是我使用的原因cls.newInstance()(它假设有一个无参数的构造函数)
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);
}
}
}
Run Code Online (Sandbox Code Playgroud)
请注意,如果该字段是静态的,您可以在类级别获取它,因此int length = Array.getLength(field.get(null));可以工作.
| 归档时间: |
|
| 查看次数: |
531 次 |
| 最近记录: |