Java 如何获取泛化对象中使用的类
我有下面的方法,它需要一个带有参数化类的对象。请帮助我找到T的类。例如,我已经返回了JsonObject.classJava 如何获取泛化对象中使用的类,java,android,Java,Android,我有下面的方法,它需要一个带有参数化类的对象。请帮助我找到T的类。例如,我已经返回了JsonObject.class private static <T> Class<T> getType(me.yoctopus.util.Response<HttpResponse<T>, JSONException> response) { /* Type type = ((ParameterizedType) response
private static <T> Class<T> getType(me.yoctopus.util.Response<HttpResponse<T>, JSONException> response) {
/*
Type type = ((ParameterizedType) response
.getClass()
.getGenericSuperclass()).getActualTypeArguments()[0];
Type httResponse = ((ParameterizedType) type
.getClass()
.getGenericSuperclass()).getActualTypeArguments()[0];
return (Class<T>) httResponse;*/
return (Class<T>) JSONObject.class;
}
私有静态类getType(me.yoctopus.util.Response){
/*
类型类型=((ParameteredType)响应
.getClass()
.getGenericSuperclass()).getActualTypeArguments()[0];
类型httResponse=((参数化类型)类型
.getClass()
.getGenericSuperclass()).getActualTypeArguments()[0];
返回(类)HTT响应*/
返回(Class)JSONObject.Class;
}
我需要确定并返回类T非常确定您不能这样做。调用方需要提供类型令牌(例如
class
)。除非类型在编译时已知,否则无法从类型参数中恢复类对象,这里没有该类型。我很确定这个问题是重复的,但是我很难找到一个好的重复来结束它。如果我把签名改成这个类getType怎么样(me.yoctopus.util.responsed您想获取泛型类还是它的名称?@yoctopus:这没有帮助,因为您无论如何都无法获取类
对象。不知何故,此代码的调用者需要传递一个表示它想要返回的类型的对象。