1

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

4

1 回答 1

2

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

数组不同。至少只要数组实际上是用字面量类型初始化的,就可以使用array.getClass().getComponentType().

于 2012-12-09T22:52:06.647 回答