我有一个带有泛型的类。 import java.lang.reflect.Array;
public abstract class MyClass<T> {
private Class<T> clazz;
private Class<?> arrayClazz;
public MyClass() {
clazz = ClassUtils.getParameterizedClass(getClass());
arrayClazz = Array.newInstance(clazz, 0).getClass();
}
}
Utils方法读取给定类的通用类型,因此我不需要将相同的类作为构造函数参数传递。我想要实现的目标是获取clazz的数组类。
例如,如果T是String,则
clazz = String.class;
arrayClazz = String[].class;
我目前通过创建T[]的新实例并读取其类来解决了这个问题。我想知道是否有更好的方法或者这种方法有什么缺点。
更新: 我的目标是:我有一个通用的DataProvider,它从服务器请求JSON数据。我使用GSON来解析响应。
public abstract class DataProvider<T> {
private final Class<T> resourceClass;
private final Class arrayClass;
protected DataProvider() {
this.resourceRootPath = resourceRootPath;
this.resourceClass = ClassUtils.getParameterizedClass(getClass());
arrayClass = Array.newInstance(resourceClass, 0).getClass();
}
public void get(String id) {
...
T obj = gson.fromJson(response.body().charStream(), resourceClass)
...
}
public void list(String id) {
...
T[] objs = gson.fromJson(response.body().charStream(), arrayClass)
...
}
}
List<T> list;
并实例化它呢?不需要任何魔法。 :-) - Buurman