繁体   English   中英

未经检查从通用T转换为可比较的防止编译

[英]Unchecked cast from generic T to comparable preventing compile

我应该在没有递归的情况下实现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 []

如果你想避免警告,你可以这样做:

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而不是那种代码。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM