我的方法看起来像
doSomething( Class<T> valueType)
我将传递值称为
Map.class,Long.class
作为上述方法的参数。如果我想使用泛型。我应该如何将值传递给上述方法? doSomething(Class<Map>);
无效
答案 0 :(得分:2)
Map.class
返回Class<Map>
类型的对象,Long.class
返回Class<Long>
类型的对象。
所以将你需要的Map.class
传递给我Map。
如果你希望你的T是通用的,比如说ArrayList<String>
,那就不可能了。
原因是Java中的泛型使用类型擦除,这意味着泛型类型仅在编译时存在,但它在运行时被擦除。因此,不存在类似ArrayList<String>.class
的内容。
Java泛型在这个意义上与C#泛型完全不同。