如何确定属于特定类的对象

时间:2018-03-02 06:21:20

标签: java oop data-structures

这是我的接口Icontestant的类定义:

   interface IContestant {  
}

class TennisPlayer implements IContestant {
  String name;
  int ranking;

  TennisPlayer (String name, Integer ranking){
    this.name = name;
    this.ranking = ranking;
  }
}

class NotYetKnown  implements IContestant {

  NotYetKnown (){
  }
}

这是我对类MatchData的定义:

    class MatchData {
  IContestant side1;
  IContestant side2;
  IContestant winner;
  IScore score;


  MatchData (IContestant side1, IContestant side2, IContestant winner, IScore score){
    this.side1 = side1;
    this.side2 = side2;
    this.winner = winner;
    this.score = score;
  }      
}

以下是我对ITournament的定义

interface ITournament {
  boolean winnerPlayed ();
}

class InitMatch implements ITournament {
  MatchData matchData;  

  InitMatch (MatchData matchData){
    this.matchData = matchData;
  }

 public boolean winnerPlayed (){
    if ((this.matchData.winner == this.matchData.side1)||(this.matchData.winner == this.matchData.side2)){
        return true;
      }
      else
        return false;
    }
    else 
      return true;
  }

}

现在我需要向winnerPlayed ()添加条件,以检查获胜者是否先知道。如果它是未知的,那么我们可以在检查获胜者是side1还是side2之前返回true。但是,我很难让这个条件正确。 在这种情况下,我很困惑用什么来与this.matchData.winner进行比较。我知道this.matchData.side1TennisPlayerthis.matchData.side2是另一个TennisPlayer,因此我们正在比较this.matchData.winner是否为{1}}侧面2。但是当谈到未知时,我开始感到困惑。 如果你能在这里解释数据结构和对象那将是很棒的。

谢谢。

此外,TennisPlayer和Unknown的示例如下所示:

TennisPlayer

2 个答案:

答案 0 :(得分:1)

游戏有两个玩家,因此如果游戏已经玩过,获胜者必须是side1或side2,如果游戏还没有玩,则必须为null。任何其他选项都意味着您的数据不一致。

修改

如果由于某种原因,获胜者不能为null并且始终设置为NotKnownYet对象,则可以使用instanceof来检查此

if winner instanceof NotYetKnown {...

答案 1 :(得分:0)

也许你应该给空白字符串作为未知玩家的名字。然后有一个方法来检索玩家名称,如果检索的名称是一个空字符串,你知道该玩家是未知的。我知道这可能不是您可能正在寻找的解决方案,但它可能更容易实现它。