我怎样才能转换java.lang.reflect.Type成Class<T> clazz?
如果我有一个方法接下来有一个参数Class<T>:
public void oneMethod(Class<T> clazz) {
//Impl
}
Run Code Online (Sandbox Code Playgroud)
然后另一个方法有一个参数java.lang.reflect.Type和它调用oneMethod(Class<T> clazz),我需要转换java.lang.reflect.Type type 为Class<T>:
public void someMehtod(java.lang.reflect.Type type) {
// I want to pass type arg to other method converted in Class<T>
otherMethod(¿How to convert java.lang.reflect.Type to Class<T>?);
}
Run Code Online (Sandbox Code Playgroud)
可能吗?
Dan*_*eer 16
如果您愿意使用图书馆,您可以使用com.google.guava:guava:12+:
Class<?> clazz = com.google.common.reflect.TypeToken.of(type).getRawType();
Run Code Online (Sandbox Code Playgroud)
或者,您也可以使用com.fasterxml.jackson.core:jackson-databind:2.8.x:
Class<?> clazz = com.fasterxml.jackson.databind.type.TypeFactory.rawClass(type);
Run Code Online (Sandbox Code Playgroud)
这可以正确处理所有情况,您将获得类型擦除的类。
And*_*ner 14
您必须确保它type是一个实例Class,然后将其强制转换.
if (type instanceof Class) {
@SuppressWarnings("unchecked")
Class<?> clazz = (Class<?>) type;
otherMethod(clazz);
}
Run Code Online (Sandbox Code Playgroud)
当然,你还必须处理它不是的情况Class.
| 归档时间: |
|
| 查看次数: |
19167 次 |
| 最近记录: |