2016-12-17 7 views
0

は私がジェネリックとワイルドカード

public static Comparable<? extends Comparable> getMax (ArrayList <? extends Comparable> list) 

を書き込もうとしていると私は、Comparable例外

  • が生タイプで受け取ります。同等のジェネリック型への参照が パラメータ化

私は何を行うことができすべきですか?コレクションを受け取ってインタフェースを実装するvaraiableを返すようにしたい

答えて

0

リストで最大値を探したい場合は、Comparableを返すのはなぜですか?返すTここで、Tは、リストに格納されているオブジェクトの型です。

さらに、ここではワイルドカードを使用しないでください。あなたはこのようなあなたの方法を記述する場合:

public static Comparable<? extends Comparable> getMax (ArrayList <? extends Comparable> list) 

その後、クライアントコードはArrayList<Integer>を渡すことができますし、まったく意味をなさないStringを返すことができます。状況のようなものを避けるために

は、私はあなたが最も一般的に使用するジェネリック型T

public static <T extends Comparable<T>> T getMax (ArrayList<T> list) { 
    return list.stream().max(Comparable::compareTo).orElse(null); 
} 
+0

を使用することをお勧め '' 拡張>を – newacct

関連する問題