我有一個泛型類的類。 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
是字符串然後
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)
...
}
}
你想做什麼? 你爲什麼試圖獲取數組類型的參數類型?如果你想保存一個T類型元素的集合,爲什麼不創建一個字段'List list;'並實例化它?沒有魔法需要。 :-) –
Buurman
@SotiriosDelimanolis我很確定它的工作原理。我沒有寫,所以我不能分享它。 –
@Buurman我更新了問題來解釋我在做什麼。希望它能澄清一點。 –