...
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); // bad } return false; } //This method violates its contract public int compareTo(Object o){ if (o instanceof Card){ Card c = (Card)o; if(suit.equals(c.suit)) return 0; if((c.rank >= rank + Integer.MIN_VALUE) && (c.rank <= rank + Integer.MAX_VALUE)) // check for integer underflow return c.rank - rank; } 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 positive number } } |
...