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

问题描述 投票:0回答:2

这是我的接口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是side1或side2的TennisPlayer。但是当谈到未知时,我开始感到困惑。如果你能在这里解释数据结构和对象那将是很棒的。

谢谢。

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

  TennisPlayer tennisPlayer1 = new TennisPlayer("Andre Agassi", 7);
  TennisPlayer tennisPlayer2 = new TennisPlayer ("Pat", 4);
  NotYetKnown unknown = new NotYetKnown();
  MatchData matchTennis2 = new MatchData (tennisPlayer1, tennisPlayer2, notYetKnown, tennisScore3 );
  InitMatch initTennis1 = new InitMatch (matchTennis1);
java oop data-structures
2个回答
1
投票

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

编辑

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

if winner instanceof NotYetKnown {...

0
投票

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

© www.soinside.com 2019 - 2024. All rights reserved.