具有多个泛型的Java泛型数组声明?

具有多个泛型的Java泛型数组声明?,java,generics,Java,Generics,我正试图在java中创建这样一个泛型类 public class Cache <K,V> { private Entry<K,V>[][] cache; public Cache(int setCount, int arity){ this.cache = new Entry<K,V>[setCount][arity]; } 公共类缓存{ 私有条目[][]缓存; 公共缓存(int setCount,int arity){ this.

我正试图在java中创建这样一个泛型类

public class Cache <K,V> {

  private Entry<K,V>[][] cache;

  public Cache(int setCount, int arity){

      this.cache = new Entry<K,V>[setCount][arity];
}
公共类缓存{
私有条目[][]缓存;
公共缓存(int setCount,int arity){
this.cache=新条目[setCount][arity];
}
现在java告诉我不能声明一个泛型数组?我知道在C语言中我可以把它放在内存中。有人知道在java中应该怎么做吗

有人知道如何在java中实现这一点吗

改用
ArrayList
(在
ArrayList
中)类似于

private List<List<Entry<K,V>> cache;
this.cache = new ArrayList<>(setCount);
根据你的需要

请查看以了解更多详细信息

有人知道如何在java中实现这一点吗

改用
ArrayList
(在
ArrayList
中)类似于

private List<List<Entry<K,V>> cache;
this.cache = new ArrayList<>(setCount);
根据你的需要


查看更多详细信息

您可以直接使用

this.cache = new Entry[setCount][arity];
这将生成类似以下内容的警告:

类型安全:类型条目[]的表达式需要未经检查的转换才能符合条目[][]

但是你必须接受它,或者你可以用
@SuppressWarnings(“未选中”)
来抑制它


请注意,由于
缓存
的类型为
条目[]【】
,因此泛型行为仍然适用于它。

您可以直接使用

this.cache = new Entry[setCount][arity];
这将生成类似以下内容的警告:

类型安全:类型条目[]的表达式需要未经检查的转换才能符合条目[][]

但是你必须接受它,或者你可以用
@SuppressWarnings(“未选中”)
来抑制它


请注意,由于
缓存
的类型为
条目[][]
,泛型行为仍然适用于它。

非常感谢您的回答,我选择了下面的答案,因为我担心访问时间。这种担心合适吗?嗯
ArrayList
List
的一个实现,它由
array
内部支持,因此,不,访问时间是just大致相同(允许额外的方法调用),它还可以动态调整大小,因此您可以根据需要对其进行扩展或收缩,而无需额外的代码。几乎在任何可能使用数组的地方,您都可以使用
ArrayList
代替。有人愿意解释为什么这会获得否决票吗?这是一个可行的解决方案,可以解决已声明的问题。这是一个可行的解决方案使用纯数组非常感谢您的回答,我之所以选择下面的答案是因为我担心访问时间。这种担心合适吗?嗯
ArrayList
List
的一个实现,它由
array
内部支持,因此,不,访问时间几乎是一样的(允许额外的方法调用),它还可以动态调整大小,因此您可以根据需要对其进行扩展或收缩,而无需额外的代码。几乎在任何可能使用数组的地方,您都可以使用
ArrayList
代替。有人愿意解释为什么这会获得否决票吗?这是一个可行的解决方案,可以解决已声明的问题。这是一个可行的解决方案使用普通数组