如何将泛型传递给此方法

时间:2011-11-14 01:16:23

标签: java generics

我的方法看起来像

doSomething( Class<T> valueType)

我将传递值称为

  

Map.class,Long.class

作为上述方法的参数。如果我想使用泛型。我应该如何将值传递给上述方法? doSomething(Class<Map>);无效

1 个答案:

答案 0 :(得分:2)

Map.class返回Class<Map>类型的对象,Long.class返回Class<Long>类型的对象。

所以将你需要的Map.class传递给我Map。 如果你希望你的T是通用的,比如说ArrayList<String>,那就不可能了。 原因是Java中的泛型使用类型擦除,这意味着泛型类型仅在编译时存在,但它在运行时被擦除。因此,不存在类似ArrayList<String>.class的内容。

Java泛型在这个意义上与C#泛型完全不同。