如何在空ArrayList中测试元素类的类?

时间:2012-12-09 22:49:07

标签: java

所以我有一个从参数传递的通用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"),但它不起作用......

1 个答案:

答案 0 :(得分:3)

无法区分空ArrayList<String>ArrayList<Integer>之间的区别。由于类型擦除,这是非常慎重的。 (那是因为 在运行时没有区别。)

阵列不同。至少只要使用文字类型实际初始化数组,就可以使用array.getClass().getComponentType()