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

时间:2015-08-03 02:30:36

标签: java class tostring composition

我在学习Java的同时正在研究这个项目,我创建了一个Card类,它有一个 toString()方法但是当我试图转换一个CardDeck类中的字符串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; } 提出错误

  

这是Card类:

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];
}    
  

这是Deck课程:

d.fixed = true

3 个答案:

答案 0 :(得分:3)

您无法将Card对象强制转换为String个对象。

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

尝试以下

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

答案 1 :(得分:1)

调用返回卡[i]返回卡类型的对象。您必须实际调用toString()方法,以便返回对象是String而不是Card。希望这有帮助!

答案 2 :(得分:0)

如果您的每个班级的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();
}

然后甲板课程toString(int i)可能如下:

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

如果您将@Override添加到RankSuit课程,则Card课程toString()可能如下所示:

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