通用类型数组 - 无法从类型变量中选择

时间:2016-02-07 10:24:27

标签: java generics

我试图转换以下方法:

public List<AliasIp> getStoreAsList(String storeName) {
    return new java.util.ArrayList<>(Arrays.asList(mGson.fromJson(getStoreRaw(storeName), AliasIp[].class)));
}

与类似的通用版本:

public <T> List<T> getStoreAsList(String storeName) {
    return new java.util.ArrayList<T>(Arrays.asList(mGson.fromJson(getStoreRaw(storeName), T[].class)));
}

但是我遇到了 T []。class 的麻烦,它没有用错误编译:

&#34;无法从类型变量&#34;

中进行选择

语法应该是什么来避免这个错误?

1 个答案:

答案 0 :(得分:5)

您可以将Class<T[]> klass包含在方法参数中,如下所示:

public <T> List<T> getStoreAsList(String storeName, Class<T[]> klass) {
    return new java.util.ArrayList<T>(Arrays.asList(mGson.fromJson(getStoreRaw(storeName), klass)));
}

然后就这样使用它:

List<MyStore1> myStores1 = getStoreAsList("myStoreName1", MyStore1[].class);
List<MyStore2> myStores2 = getStoreAsList("myStoreName2", MyStore2[].class);