0
我想寫泛型和通配符
public static Comparable<? extends Comparable> getMax (ArrayList <? extends Comparable> list)
,我收到一個異常
- 可比是原始類型。引用泛型類型可比應該是 參數
我該怎麼辦?我想收到一個集合並返回一個實現接口的可變參數
我想寫泛型和通配符
public static Comparable<? extends Comparable> getMax (ArrayList <? extends Comparable> list)
,我收到一個異常
- 可比是原始類型。引用泛型類型可比應該是 參數
我該怎麼辦?我想收到一個集合並返回一個實現接口的可變參數
如果您想查找列表中的最大值,爲什麼返回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);
}
是最普遍使用'>' –
newacct