...
| Code Block | ||
|---|---|---|
| ||
public final class Card implements Comparable{
private String suit;
private int rank;
public Card(String s, int r) {
if (s == null)
throw new NullPointerException();
suit = s;
rank = r;
}
public boolean equals(Object o) {
if (o instanceof Card) {
Card c=(Card)o;
return suit.equals(c.suit) && (rank == c.rank); // good
}
return false;
}
// this method fulfills its contract
public int compareTo(Object o) {
if (o instanceof Card) {
Card c=(Card)o;
if( suit.equals(c.suit) &&
(c.rank >= rank + Integer.MIN_VALUE) &&
(c.rank <= rank + Integer.MAX_VALUE) )
return c.rank - rank;
return suit.compareTo(c.suit);
}
throw new ClassCastException();
}
public static void main(String[] args) {
Card a = new Card("Clubs", 2);
Card b = new Card("Clubs", 10);
Card c = new Card("Hearts", 7);
System.out.println(a.compareTo(b)); // returns 0
System.out.println(a.compareTo(c)); // returns a negative number
System.out.println(b.compareTo(c)); // returns a negative number
}
}
|
...