我有许多抽象类,每个抽象类都继承了三个或四个具体的类,其形式为:
public abstract class TypeOfMapObject extends IrrelevantClass implements Serializable, MapObject, Comparable<MapObject>
{
//irrelevant stuff
@Override
public int compareTo(MapObject m)
{
//specific algorithm for natural ordering
}
}
在我的代码的其他地方,我有一个ArrayList<MapObject>
(已正确填充,我已经检查过)调用tempMapObjectsArray
我想ArrayList
使用排序Collections.sort(tempMapObjectsArray)
(或者,更确切地说,我想排序,ArrayList
这似乎Collections.sort()
是最好的方法。具体方式它的排序并不重要)。
它没有编译并给出消息(在 Netbeans 中):
no suitable method found for sort(java.util.ArrayList<Model.MapObject>)
method java.util.Collections.<T>sort(java.util.List<T>,java.util.Comparator<? super T>) is not applicable
(cannot instantiate from arguments because actual and formal argument lists differ in length)
method java.util.Collections.<T>sort(java.util.List<T>) is not applicable
(inferred type does not conform to declared bound(s)
inferred: Model.MapObject
bound(s): java.lang.Comparable<? super Model.MapObject>)
似乎我在TypeOfMapObject
课堂上定义了泛型错误,但这是我第一次真正使用泛型,并且已经到了我只是或多或少随机尝试的阶段。我正在阅读本教程,但到目前为止,它根本没有“点击”我做错了什么。
编辑:各种抽象类的每个子类都需要相互比较 - 所以如果我有抽象类TypeofMapObject1
等TypeOfMapObject2
,那么我需要能够将 1 的子类与 2 的子类进行比较。