Java反射-获取数组对象的大小
我想知道是否有人知道如何使用反射获得数组对象的大小 我有一个车辆组件,其中包含一个车辆类型的数组对象 Vehicles.javaJava反射-获取数组对象的大小,java,arrays,reflection,size,illegalargumentexception,Java,Arrays,Reflection,Size,Illegalargumentexception,我想知道是否有人知道如何使用反射获得数组对象的大小 我有一个车辆组件,其中包含一个车辆类型的数组对象 Vehicles.java public class Vehicles{ private Car[] cars; // Getter and Setters } public class Car{ private String type; private String make; private String model; // Gett
public class Vehicles{
private Car[] cars;
// Getter and Setters
}
public class Car{
private String type;
private String make;
private String model;
// Getter and Setters
}
Car.java
public class Vehicles{
private Car[] cars;
// Getter and Setters
}
public class Car{
private String type;
private String make;
private String model;
// Getter and Setters
}
我想知道如何使用Java反射获得车辆组件中车辆数组的大小
我当前有以下内容:
final Field[] fields = vehicles.getClass().getDeclaredFields();
if(fields.length != 0){
for(Field field : fields){
if(field.getType().isArray()){
System.out.println("Array of: " + field.getType());
System.out.println(" Length: " + Array.getLength(field.getType()));
}
}
}
这将导致以下错误:
java.lang.IllegalArgumentException: Argument is not an array
at java.lang.reflect.Array.getLength(Native Method)
有什么想法吗?方法
Array.getLength(Array)
需要一个数组实例。在代码示例中,您正在对字段的数组类型调用它。它无法工作,因为数组字段可以接受任何长度的数组
正确的代码是:
Array.getLength(field.get(vehicles))
或者更简单
Array.getLength(vehicles.cars);
或者最简单的
vehicles.cars.length
注意一个空的车辆。但是车辆值。试试
System.out.println(" Length: " + Array.getLength(field.get(vehicles)));
我想您必须将数组对象本身传递给array.getLength()
,所以请尝试
Array.getLength(field.get(vehicles))
嗯,你不妨说汽车。长度:-)你说得对!对于这样一个简单的事情,原始代码是如此复杂,以至于我搞砸了,并将反射…字段。get()
保留在一个对象上,该对象将具有该字段。当然,必须通过vehicles对象!