我正在尝试在这样的
中创建一个通用类public class Cache <K,V> {
private Entry<K,V>[][] cache;
public Cache(int setCount, int arity){
this.cache = new Entry<K,V>[setCount][arity];
}
现在java告诉我我不能声明一个通用数组?我知道在C中我可以把它放在记忆中。有谁知道在java中应该怎么做?
答案 0 :(得分:3)
您可以直接使用,
this.cache = new Entry[setCount][arity];
这将生成类似于
的警告类型安全:Entry [] []类型的表达式需要未经检查的转换以符合Entry [] []
但你必须忍受它,或者你可以用@SuppressWarnings("unchecked")
来压制它。
请注意,由于cache
的类型为Entry<K,V>[][]
,因此泛型行为仍然适用于此。
答案 1 :(得分:1)
有谁知道如何在java中完成这项工作?
使用ArrayList
(在ArrayList
内)代替......
private List<List<Entry<K,V>> cache;
然后你可以使用类似......
之类的东西来初始化它this.cache = new ArrayList<>(setCount);
现在,如果您想要预先添加孩子List
,则由您自己决定。您可以延迟创建它,或使用构造函数创建它,例如......
for (int index = 0; index < setCount; index++) {
cache.add(new ArrayList<>(arity));
}
取决于您的需求
请查看Collections Trail了解详情