Java: 如何在另一个 class 中使用一个的 toString() 方法?

Java: How to use the toString() method of one class in an other one?

我在学习 Java 的同时从事这个项目,我创建了一个 Card class,它有一个 toString() 方法但是当我试图将 Card 对象转换为 Deck class 中的字符串时,我收到 error.

Here is the Card class:

private final Rank cardRank;
private final Suit cardSuit;

public Card(Rank cardRank, Suit cardSuit){
    this.cardRank = cardRank;
    this.cardSuit = cardSuit;
}

public String toString(){
    return "The " + cardRank + " of " + cardSuit;
}

Here is the Deck class:

private Card[] card = new Card[52];

public Deck(){
    int i = 0;
    for(Suit suit: Suit.values()){
        for(Rank rank: Rank.values()){
            card[i++] = (new Card(rank, suit));
        }
    }
}

public String toString(int i){
    return card[i];
}    

您不能将 Card 对象转换为 String 对象。

您可以通过toString()方法获取Card对象的String表示。

像下面这样尝试

public String toString(int i){
    return card[i].toString();
} 

调用returncard[i]returns一个类型为card的对象。您必须实际调用 toString() 方法,以便您的 return 对象是字符串而不是卡片。希望这对您有所帮助!

如果你的每个 class 的 toString() 没有 @Override 注释,那么你必须显式调用 toString()

示例:

return card[i].toString();
return "The " + cardRank.toString() + " of " + cardSuit.toString;

如果像这样添加 @Override 注释:

@Override
public String toString(){
    return "The " + cardRank.toString() + " of " + cardSuit.toString();
}

然后 Deck class toString(int i) 可以看起来像:

public String toString(int i){
    return card[i];
} 

如果将 @Override 添加到 RankSuit class,则 Card class toString()可以看起来像:

public String toString(){
    return "The " + cardRank + " of " + cardSuit;
}