我需要声明一个Map.class
的实例,但是地图是打字的...所以我需要这样的东西:
Class <Map<String, String>> clazz = Map.class;
此行导致编译错误。表达这个的干净方式是什么?
答案 0 :(得分:4)
你可以使用演员阵容。
Class<Map<String, String>> clazz = (Class<Map<String, String>>) (Object) Map.class;
这会生成警告,但会编译。
问题在于,由于类型擦除,运行时生成的对象与Map.class
没有区别(它不知道类型)。
如果您需要一个真正代表Map<String, String>
的对象,您可以使用java.lang.reflect.Type
或番石榴TypeToken
进行查看。
答案 1 :(得分:2)
import java.util.*;
public class Test{
public static void main(String [] args){
Class <Map> clazz = Map.class;
System.out.println(clazz);
}
}
将打印
interface java.util.Map
答案 2 :(得分:0)
Map<String, String> clazz = new HashMap<String, String>()
请记住,Map是一个界面,不能直接实例化,只能通过实现它的类来实现,例如HashMap
或TreeMap