如下我已經定義了一個抽象類對象中的任意數組:爪哇排序
public abstract class Move implements Comparable<Move> {
protected int cell;
protected int weight;
public int getWeight()
{
return this.weight;
}
public void setWeight(int value)
{
this.weight = value;
}
protected Move(int cell)
{
this.cell = cell;
this.weight = 0;
}
protected Move(int cell, int weight)
{
this.cell = cell;
this.weight = weight;
}
@Override
public int compareTo(Move m)
{
return this.weight - m.weight;
}
我有一個額外的2類,擴展此類(歸類MoveLeft和MoveRight的)。我想補充這兩種類型的對象類型移動的一個列表,然後排序使用Collections.sort:
List<Move> moves = new ArrayList<Move>(someSize);
moves.add(new MoveLeft(cell1));
moves.add(new MoveRight(cell2));
moves.add(new MoveRight(cell3));
moves.add(new MoveLeft(cell4));
Collections.sort(moves);
然而,該列表進行排序,通過細胞代替按重量計。
不可能在同一類中混合不同的子類實例嗎?
注意:我爲子類的構造函數中的權重設置了一個唯一的值。
做的子類重寫compareTo? – 2013-03-15 13:24:51
不,他們沒有。他們應該嗎? – 2013-03-15 13:25:36
不......這將是您見過的行爲的一種解釋。 – 2013-03-15 13:26:04