创建双通用数组 - Java

Pep*_*per 1 java arrays generics casting

所以我试图创建一个双通用类的数组,但由于某种原因它给了我一个错误.

码:

Node<K, V>[] table = (Node<K, V>[]) new Object[10];
Run Code Online (Sandbox Code Playgroud)

我收到以下错误:

线程"main"中的异常java.lang.ClassCastException:[Ljava.lang.Object; 无法转换为[HashCache $ Node;

所以,我想知道为什么它给我这个错误,我该如何解决它.

Mur*_*nik 6

一个Object[]ins't一个Node[]-例如,你可以设置的一个元素Object[]"Hello Word",你不能用做Node[].TL; DR,你应该创建一个Node[]:

Node<K, V>[] table = new Node[10];
Run Code Online (Sandbox Code Playgroud)

  • 没有演员的@PeterLawrey,这只是一个未经检查的任务警告.使用强制转换(`(Node <K,V> [])`,BTW,而不是`(Node <K,V>)`),这是一个未经检查的强制警告,所以它就像是"选择你的毒药"场景. (4认同)