Java是否支持泛型数组?

从一些资料中看到,Java不支持泛型数组,想知道这么说的理由。

但是,为什么HashMap保存数据的结构是个泛型数组:

transient Entry<K,V>[] table

想问

Java是否支持泛型数组?

阅读 4.6k
4 个回答

Java不支持泛型数组。

比如说你new K[n]这样是不行的。只能(K[])new Object[n]

泛型数组啊。我第一次听到这个名字呢。

Entry 是支持泛型的类型。
Entry[] table 改成这样没啥问题吧。就是在调用。entry.getKey() entry.getValue() 的时候需要强制类型转换。

如果你真正的想使用泛型,你可以选择list接口的实现类。

新手上路,请多包涵

Java 允许你定义泛型数组,但是只能创建元素为特定类型的泛型数组,特定类型指 raw type 或者 unbound parameterized type.
原因是泛型在编译期会经过 type erasure,所以在运行期无法区分同一个 generic type 对应的的不同 parameterized type, 而数组会在运行期要求元素都是同一类型的。
可以参考这个: https://segmentfault.com/a/11...

推荐问题