【发布时间】:2014-06-01 06:54:42
【问题描述】:
我在尝试编写一种方法来返回泛型 ArrayList 中体积最小的对象时遇到问题。这些是我编写代码的指导方针:
分钟() - 此方法采用有界通用类型的 ArrayList,它只允许 Shape 对象及其子类。 - 该方法应返回对象列表中体积最小的对象。
但我不完全确定我是否正确地遵循了它。有没有办法可以使用 Collections.min(和 Collections.max,因为我也必须编写最大音量方法)?我收到一个绑定不匹配错误说:集合类型的通用方法 min(Collection) 不适用于参数 (ArrayList)。推断的类型 Shape 不是有界参数的有效替代品>
我的 Shape 类只是一个带有 getVolume() 的接口;我的其他类(球体、椭圆体等)覆盖此方法的方法:
public interface Shape {
public double getVolume();
}
这是我的 min 方法(在具有其他方法的另一个类中)我遇到了问题:
public static <T> T min() {
ArrayList<? extends Shape> list;
T min = Collections.min(list));
return min;
【问题讨论】:
-
您的 Shape 接口必须扩展 Comparable
,或者您必须将 Comparator 传递给 Collections.min()(这将是我的首选解决方案)。 -
投票赞成你的评论,你是对的,但如果不可能,你仍然需要实现某种
compareTo()方法。这是可比较的文档docs.oracle.com/javase/7/docs/api/java/lang/Comparable.html
标签: java generics arraylist min