获取通用类类型

小蜘蛛:

嗨,Java中有什么方法可以获取静态通用类类型

我结束了构建

    List<TaskLocalConstraints> l = new ArrayList<TaskLocalConstraints>();
    Class<List<TaskLocalConstraints>> c = (Class<List<TaskLocalConstraints>>)l.getClass();

我想知道是否存在类似的东西:

    Class c = List<TaskLocalConstraints>.class;

(我真的不想构造新的对象只是为了获得其类型)

谢谢

谢尔盖·塔切诺夫(Sergei Tachenov):

由于所有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;

这很愚蠢,但是有效。它会产生“未经检查”的警告,但是您的示例也是如此。请注意,尽管如此,它不会产生与您的示例相同的类。您的示例返回了对象的实际类,即ArrayListList显然是返回的

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章