通用持有人的数组

时间:2016-06-12 22:58:35

标签: java arrays generics

如果我有一个Entry ..对象的地图,我在类中有一个数组

private Entry<K,V> array;

我可以说

array = new Entry[someInt];

我已经完成了,或者我需要像我的导师那样的类型转换说是必要的,例如

array = (Entry<K,V> E[]) new Entry[someInt];

请注意,第一个在运行JUnits时确实有用。

2 个答案:

答案 0 :(得分:0)

你有没有想过做一个名单?

Entry<K,V> array = new ArrayList<Entry<K,V>>();
array.add(new HashMap<K,V>());

答案 1 :(得分:0)

你可以做任何一个。允许在没有强制转换的情况下与原始类型进行隐式转换。

array = new Entry[someInt];会产生未经检查的转化警告。

array = (Entry<K,V>[])new Entry[someInt];会产生未经检查的投射警告。

所以两个人都不比另一个好。

请注意,如果使用通配符类型创建数组,则需要进行强制转换:

array = (Entry<K,V>[])new Entry<?,?>[someInt]; // compiles
array = new Entry<?,?>[someInt];               // doesn't compile