簡體   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