1 回答
TA贡献1780条经验 获得超5个赞
使用java.lang.reflect.Array
是关键。如果你有一个Object
which 实际上是某种类型的数组(原始类型、字符串或某种自定义类型等),你可以在不知道其类型或进行类型转换等的情况下迭代、打印等。
Object[]
无法进行类型转换,因为元素不是类型Object
,但您可以通过了解其组件类型 ( obj.getClass().getComponentType()
) 来类型转换为特定类型的数组。但是,java.lang.reflect.Array
基于解决方案要干净得多。
import java.lang.reflect.Array;
public class ArrayOfUnknownType {
public static void main(String[] args) {
int[] i = {1, 2, 3};
String[] s = {"a", "b", "c"};
Dog[] d = {new Dog("d"), new Dog("e")};
process(i);
process(s);
process(d);
}
private static void process(Object data) {
System.out.println(data.getClass().getComponentType());
if(data.getClass().isArray()) {
int length = Array.getLength(data);
for(int count =0; count < length; count++ ){
System.out.println(Array.get(data, count));
}
}
}
private static class Dog {
public String name;
public Dog(String name) {
this.name = name;
}
@Override
public String toString() {
return "Dog{" +
"name='" + name + '\'' +
'}';
}
}
}
添加回答
举报