具有多个泛型的Java泛型数组声明?
我正试图在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.
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
代替。有人愿意解释为什么这会获得否决票吗?这是一个可行的解决方案,可以解决已声明的问题。这是一个可行的解决方案使用普通数组