【发布时间】:2016-03-30 21:36:09
【问题描述】:
我有一个名为 Card 的自定义类
public class Card implements Serializable, Comparable<Card>{
private static final long serialVersionUID = 100L;
private Rank rank;
private Suit suit;
public Card(Rank rank, Suit suit){
this.rank = rank;
this.suit = suit;
}
public enum Rank{
TWO(2), THREE(3), FOUR(4), FIVE(5), SIX(6), SEVEN(7), EIGHT(8), NINE(9), TEN(10), JACK(10), QUEEN(10), KING(10), ACE(11);
private final int value;
Rank(int value){
this.value = value;
}
}
public enum Suit{
CLUBS, DIAMONDS, HEARTS, SPADES;
public static Suit getSuit(){
Random rand = new Random();
return values()[rand.nextInt(values().length)];
}
}
为了检查它们是否相同,我正在这样做:
Card smth = new Card(Card.Rank.ACE,Card.Suit.CLUBS);
Card smth1 = new Card(Card.Rank.ACE,Card.Suit.CLUBS);
System.out.println(smth.equals(smth1));
但它总是给我false,我不知道为什么会这样,我也尝试将它们放入ArrayList 并检查contains(),但输出是相同的。
【问题讨论】:
-
您不会在代码中的任何位置覆盖
compareTo。 -
阅读 equals() 的 javadoc。这就是你如何知道一个方法做了什么以及为什么它返回 false。
-
我只是没有在此处添加它,否则它看起来像一团糟
-
@AlexisC。 compareTo 无关紧要。 OP 使用 equals()。
-
那么实现
Comparable有什么意义呢?
标签: java object equals contains