关于java泛型

来源:8-3 Prim算法的第一个实现 (Lazy Prim)

慕码人1088981

2018-06-21

public class MinHeap <Item extends Comparable> { 

private int count;//堆中的元素个数

private int capacity;//堆的容量

private Item[] data;//堆

public MinHeap(int capacity){

count=0;

this.capacity=capacity;

data=(Item[])new Comparable[capacity+1]; //这里定义数组为什么要这么定义,怎么理解?

}


写回答

1回答

liuyubobobo

2018-06-22

也可以定义为:data = (Item[])new Object[capacity + 1]。不管怎样,需要这个类型转换,将Object[]或者Comparable[]转换成Item[]。


由于历史原因,java语言不支持直接申请泛型类型的数组空间,也就是不能直接写data = new Item[capacity + 1],编译器会报错。必须先申请一个具体类型的空间,再做类型转换:)

0
1
慕码人1088981
非常感谢!
2018-06-23
共1条回复

算法与数据结构(C++版) 面试/评级的算法复习技能包

课程专为:短时间内应对面试、升职测评等艰巨任务打造

11187 学习 · 1614 问题

查看课程