从一些资料中看到,Java不支持泛型数组,想知道这么说的理由。
但是,为什么HashMap保存数据的结构是个泛型数组:
transient Entry<K,V>[] table
想问
Java是否支持泛型数组?
从一些资料中看到,Java不支持泛型数组,想知道这么说的理由。
但是,为什么HashMap保存数据的结构是个泛型数组:
transient Entry<K,V>[] table
想问
Java是否支持泛型数组?
泛型数组啊。我第一次听到这个名字呢。
Entry
是支持泛型的类型。Entry[] table
改成这样没啥问题吧。就是在调用。entry.getKey()
entry.getValue()
的时候需要强制类型转换。
Java 允许你定义泛型数组,但是只能创建元素为特定类型的泛型数组,特定类型指 raw type 或者 unbound parameterized type.
原因是泛型在编译期会经过 type erasure,所以在运行期无法区分同一个 generic type 对应的的不同 parameterized type, 而数组会在运行期要求元素都是同一类型的。
可以参考这个: https://segmentfault.com/a/11...
4 回答1.6k 阅读✓ 已解决
4 回答1.4k 阅读✓ 已解决
1 回答2.7k 阅读✓ 已解决
4 回答2.2k 阅读
3 回答1k 阅读✓ 已解决
2 回答813 阅读✓ 已解决
2 回答1.4k 阅读
Java不支持泛型数组。
比如说你
new K[n]
这样是不行的。只能(K[])new Object[n]
。