Java 不允许泛型类的内部类数组
我知道你不能创建一个泛型类型的数组,相反,你必须诉诸黑客。(鉴于Java支持通用数组,只是不支持它们的创建,我不清楚为什么黑客比Java支持创建通用数组更好)
而不是写这个
Map.Entry<K, V>[] entries = new Map.Entry<K, V>[numEntries];
你必须写这个
@SuppressWarnings("unchecked")
Map.Entry<K, V>[] entries = (Map.Entry<K, V>) new Map.Entry[numEntries];
不幸的是,如果你有一个泛型的嵌套类型的数组,这不起作用
public class Outer<E> {
final Inner[] inners = new Inner[16]; // Generic array creation
class Inner {
}
}
最好的解决方法似乎是
@SuppressWarnings("unchecked")
final Inner[] inners = (Inner[]) Array.newInstance(Inner.class, 16);
这是最“优雅”的解决方案吗?
我看到了来自内部类的泛型数组创建编译错误,但恕我直言,这里的解决方案更糟。