1 回答

TA貢獻(xiàn)1780條經(jīng)驗(yàn) 獲得超5個(gè)贊
使用java.lang.reflect.Array
是關(guān)鍵。如果你有一個(gè)Object
which 實(shí)際上是某種類型的數(shù)組(原始類型、字符串或某種自定義類型等),你可以在不知道其類型或進(jìn)行類型轉(zhuǎn)換等的情況下迭代、打印等。
Object[]
無(wú)法進(jìn)行類型轉(zhuǎn)換,因?yàn)樵夭皇穷愋?code>Object,但您可以通過(guò)了解其組件類型 ( obj.getClass().getComponentType()
) 來(lái)類型轉(zhuǎn)換為特定類型的數(shù)組。但是,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 + '\'' +
'}';
}
}
}
添加回答
舉報(bào)