我被要求将程序转换为在我的数组中使用泛型类型。
我不知道从哪里开始。我试图将数组转换为泛型但我一直遇到问题。
我尝试使用queArray = (T[]) (new Comparable[maxSize]);
将数组转换为泛型数组,但在我修改所有变量以假设使用泛型类型后,我不断收到错误。
我需要在这里更改什么?
答案 0 :(得分:3)
您想宣布T
必须实施Comparable
。这允许您明确声明PriorityQ
只能支持可以进行排序的类。这样做是这样的:
class PriorityQ<T extends Comparable<T>>
现在queArray
new
应为T
数组,因为PriorityQ
正在排序T
类型的实例:
queArray = new T[maxSize];
最后,使用Comparable.compareTo
方法进行比较:
if( item .compareTo(queArray[j]) > 0 ) // if new item larger,
答案 1 :(得分:2)
目前还不清楚你想要什么,但我会猜测......
对您的类型设置绑定(已修改 - <T extends Number>
,但Number
未实现Comparable
):
class PriorityQ<T extends Number & Comparable<T>>
更改您的方法以返回T
,例如:
public T peekMin()
然后对于Long
实现,只需:
PriorityQ<Long> pqLong = new PriorityQ<Long>(9);
答案 2 :(得分:1)
下面更新以传递
thePQ.insert(30L);
thePQ.insert(50L);
thePQ.insert(10L);
thePQ.insert(40L);
thePQ.insert(20L);