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 に答える