私は他のカード(カードゲーム)から継承しているクラスのカードを持っています。カードのスーツや数は、私の最初の問題は、カードのランクの順序を変更する方法である。このCollections.sort、Enum、Comparableインターフェイスの問題
public static enum Suit {
CLUBS, DIAMONDS, HEARTS, SPADES
};
public static enum Rank {
DEUCE, THREE, FOUR, FIVE, SIX, SEVEN, EIGHT, NINE, TEN, JACK, QUEEN, KING, ACE
};
のように列挙体に格納されています。異なるカードゲームが異なるカード上で異なる重要度を置くので、クラスのクラスから継承するそれぞれの別々のクラス(カードゲーム)では、
私の2番目の問題は、Comparable Interfaceを使用していることです。
だから私は、このようなクラスのカードがあります。
public class Card implements Comparable<Card> {
public Suit suit;
public Rank rank;
public Card(Rank ranker, Suit suiter) {
rank = ranker;
suit = suiter;
}
//Other Methods for rank and suit here.
@Override
public int compareTo(Card o) {
int rankCom = rank.compareTo(o.rank);
return rankCom != 0 ? rankCom : suit.compareTo(o.suit);
}
}
を私は最近、同等のインターフェースに導入されていると私は私の実装が正しいと全くわかりません。問題は、collections.sort(cards_saver)を使用してカードを並べ替えるときに発生します。 cards_saverは私のカードを保管する場所です。そのすべてがうまく動作します。 collections.shuffle(cards_saver)もうまくいきます。私はcollections.sortを行うときに私が得る問題はこれです:
Bound mismatch: The generic method sort(List<T>) of type Collections is not applicable for the arguments (List<Card>). The inferred type Card is not a valid substitute for the bounded parameter <T extends Comparable<? super T>>
私はこれだけはあまりにも長くなっている...私が持っているすべての余分なコードを入れているでしょう。問題を十分に説明しなかった場合は、コメントしてください。私は説明しようとします。
おかげで、事前に
ええ、私はそれも意味をなさないと思った。しかし、ありがとう。私は何が間違っているかを理解するまでそれを見ていきます。 – Ester
開発環境の設定によっては、コードの一部が 'Card'の古いコンパイル済みバージョンを使用している可能性があります。清潔でビルドしているかもしれません。 – trutheality