1 回答
TA貢獻1780條經驗 獲得超5個贊
使用java.lang.reflect.Array是關鍵。如果你有一個Objectwhich 實際上是某種類型的數組(原始類型、字符串或某種自定義類型等),你可以在不知道其類型或進行類型轉換等的情況下迭代、打印等。
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 + '\'' +
'}';
}
}
}
添加回答
舉報
