嗨,有任何方法在Java中获得静态泛型类类型
我最终得到了构造
List<TaskLocalConstraints> l = new ArrayList<TaskLocalConstraints>();
Class<List<TaskLocalConstraints>> c = (Class<List<TaskLocalConstraints>>)l.getClass();
Run Code Online (Sandbox Code Playgroud)
我想知道,如果存在类似的东西:
Class c = List<TaskLocalConstraints>.class;
Run Code Online (Sandbox Code Playgroud)
(我真的不想构造新的Object只是为了得到它的类型)
谢谢
由于所有List<something>类在运行时实际上都对应于同一个类,因此您可以这样做:
Class<List<TaskLocalConstraints>> c
= (Class<List<TaskLocalConstraints>>) List.class;
Run Code Online (Sandbox Code Playgroud)
但由于某种原因,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;
Run Code Online (Sandbox Code Playgroud)
那么,让我们欺骗它:
Class<List<String>> c =
(Class<List<String>>) (Class<?>) List.class;
Run Code Online (Sandbox Code Playgroud)
这很愚蠢,但它确实有效.它产生一个"未经检查"的警告,但你的例子也是如此.但请注意,它不会导致与您的示例相同的类.您的示例返回对象的实际类,即ArrayList.List显然,这一回归.
| 归档时间: |
|
| 查看次数: |
1405 次 |
| 最近记录: |