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