我应该在没有递归的情况下实现mergesort。我已经完成了所有的爵士乐,但是这个课程并没有因为家庭作业领域以外的原因而进行编译。这是问题所在:
这方面直接来自教科书......
public <T extends Comparable<? super T>> void Mergesort(T[] a){
T[] tmpArray =(T[]) new Comparable[a.length];
发现了1个警告:文件:/Users/OcastaEshu/Java/NonRecursiveMergesort.java [line:22]
警告:/Users/OcastaEshu/Java/NonRecursiveMergesort.java:22: 警告:[未选中]未经检查的强制转换
发现:java.lang.Comparable []必需:T []
答案 0 :(得分:1)
如果你想避免警告,你可以这样做:
public static <T extends Comparable<? super T>> void Mergesort(T[] a, Class<T[]> clazz) {
T[] tmpArray = clazz.cast(Array.newInstance(a.getClass().getComponentType(), a.length));
}
classOfelement是a.getClass()
。我同意,这很难看,你最好使用@SuppressWarnings而不是那种代码。