2012-03-02 3 views
3

私は再帰なしでmergesortを実装することになっています。私はすべてのジャズを終えましたが、クラスは宿題の範囲外の理由で編集していません。この態様は教科書を形成する直接取られジェネリックTから比較可能なコンパイル防止へのチェックされていないキャスト

...

public <T extends Comparable<? super T>> void Mergesort(T[] a){ 
    T[] tmpArray =(T[]) new Comparable[a.length]; 

1警告が見つかりました:

ファイル:ここに問題がある/Users/OcastaEshu/Java/NonRecursiveMergesort.java [ライン:22]

警告:/Users/OcastaEshu/Java/NonRecursiveMergesort.java:22: 警告:[unchecked]無検査キャスト

が見つかりました:java.lang.Comparableと[]が必要:classOfelementがa.getClass()ある

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)); 
} 

:あなたが警告を回避したい場合はTが[]

+4

これは単なる警告です。そのコードはまだコンパイルする必要があります。 – jjnguy

+1

これはコンパイルする必要があります。 @SuppressWarnings( "unchecked")アノテーションも使用できます。 –

答えて

1

は、あなたがそのような何かを行うことができます。私は同意する、それは醜いですし、あなたはその種のコードの代わりに@サプレス警告を使用する方が良いでしょう。

関連する問題