2012-03-14 33 views
2

可能重复:
Generic array creation errorJava中的条目<K,V>数组如何工作?

我正在与一个Entry数组交易的转让。我想出了如何创建它,但我不完全理解它是如何工作的。为什么在创建新的Entry数组时,我不需要指定K,V类型?如果你们能够提供一些关于它如何运作的见解,我将不胜感激。

private Entry<K,V>[] data; 


data = new Entry[4096]; 
+0

你的程序中是K和V类型还是类型变量? – Jochen 2012-03-14 17:01:28

+0

它们是类型,K表示键,V表示值。 – kubiej21 2012-03-14 17:03:45

回答

3

当您使用new Entry[4096]数组你只是创建4096名的引用,编译器不会在这一点上,他们是因为将通过类型擦除拆下来Entry<K,V>引用在意。请记住,java中的泛型只是基础类格式的合成糖。在运行时,泛型不存在。

0

哪部分你不明白? Entry<K,V>是使用K和V进行参数化的泛型类型。您还可以使用Entry,这是没有泛型的原始类型(用于向后兼容)。类型擦除后它们是相同的。同样,您可以有Entry<K,V>[]Entry[]。它们可以在彼此之间进行转换,但它将是一个未经检查的转换。

其实不能在数组创建的组件类型中指定了具体的参数。您必须执行new Entry[4096]new Entry<?,?>[4096]。所以未经检查的转换是不可避免的。

相关问题