所以我有一个从参数传递的通用ArrayList。
例如:
private <T> void testClass(ArrayList<T> data){
if(data[0] instanceof Foo){
//do something
} eles if(data[0] instanceof Bar){
//do something else
}
}
但是arraylist并不保证内部有一个元素并且可能为空,get(0)
会引发异常。我怎么能这样做?
编辑:
非发起的通用数组怎么样?
例如:
private <T> void testClass(T[] data){
if(data.get(0) instanceof Foo){
//do something
} eles if(data.get(0) instanceof Bar){
//do something else
}
}
我尝试了T.class.getName().equals("Foo")
,但它不起作用......
答案 0 :(得分:3)
无法区分空ArrayList<String>
和ArrayList<Integer>
之间的区别。由于类型擦除,这是非常慎重的。 (那是因为 在运行时没有区别。)
阵列不同。至少只要使用文字类型实际初始化数组,就可以使用array.getClass().getComponentType()
。