嗨,Java中有什么方法可以获取静态通用类类型
我结束了构建
List<TaskLocalConstraints> l = new ArrayList<TaskLocalConstraints>(); Class<List<TaskLocalConstraints>> c = (Class<List<TaskLocalConstraints>>)l.getClass();
我想知道是否存在类似的东西:
Class c = List<TaskLocalConstraints>.class;
(我真的不想构造新的对象只是为了获得其类型)
谢谢
由于所有List<something>类实际上在运行时都对应于同一类,因此可以这样做:
List<something>
Class<List<TaskLocalConstraints>> c = (Class<List<TaskLocalConstraints>>) List.class;
但是由于某种原因,Java不喜欢它。用String尝试过:
Laj.java:9: inconvertible types found : java.lang.Class<java.util.List> required: java.lang.Class<java.util.List<java.lang.String>> Class<List<String>> c = (Class<List<String>>) List.class;
好吧,那我们就傻了吧:
Class<List<String>> c = (Class<List<String>>) (Class<?>) List.class;
这很愚蠢,但是有效。它会产生“未经检查”的警告,但是您的示例也是如此。请注意,尽管如此,它不会产生与您的示例相同的类。您的示例返回了对象的实际类,即ArrayList。这List显然是返回的。
ArrayList
List