【问题标题】:Calling a list of objects into an method to check for enum values将对象列表调用到方法中以检查枚举值
【发布时间】:2020-12-07 16:57:40
【问题描述】:

我是 java 新手,有一个名为 listPlayer 的对象列表,这是一个示例

Player{FirstName='Marco', LastName='Reus', Team='Dortmund', Country='Germany', Fitness='Unfit', RecoveryTime='Slow'}

我也有一个枚举,它可以评估一系列健身水平

public enum LevelOfFitness {
/**
 * Enum that represent the different level of Fitness of each player
 */

    CAREER_IN_DOUBT(8), INDEFINITELY_INJURED(7), INJURED(6), UNFIT(5), CLOSE_TO_FITNESS(4), 
NEAR_MATCH_FIT(3),
    MATCH_FIT(2), DATA_DEFICIENT(1), NOT_EVALUATED(0);

private int value;

LevelOfFitness (int aValue) {
    this.value = aValue;
}

public int getValue () {
    return value;
}

}

我还有一种方法可以循环检查在listPlayer 中找到的名称是否与在枚举值中找到的名称相同。

public LevelOfFitness from(String value){  


  LevelOfFitness found = null;
  for(LevelOfFitness level : LevelOfFitness.values()){
      if(level.name().equalsIgnoreCase(value)){
         return level;
      }
  }

   throw new IllegalStateException("Not able to find fitness level for " + value);
}

我正在努力理解如何将这个枚举方法调用到我的 main 中并将 listPlayer 调用到循环中,以便它可以返回一个健身级别。例如,第一个循环检查级别(不合适)并返回 5 的玩家非常感谢。

【问题讨论】:

  • 这个from(String)方法是在哪里声明的?在哪个班?

标签: java list object enums return


【解决方案1】:

我假设您的 from(String) 方法在 enum LevelOfFitness 中声明。

你关心将from(String) 设为static 方法,然后调用:LevelOfFitness.from("string");;

public static void main(String[] args){

    List<Player> playerList = new ArrayList<>();
    playerList.add(new Player("Marco", "Reus", "Dortmund", "Germany", "Unfit", "Slow"));
    playerList.add(new Player("Name1", "Name2", "Team1", "Country1", "not_evaluated", "time1"));
    playerList.add(new Player("Name1", "Name2", "Team1", "Country1", "error_fitness", "time1"));
        
    for(Player player : playerList){

        try{

            LevelOfFitness lof = LevelOfFitness.from(player.getFitness());
            System.out.println(lof.getValue());

        }catch(Exception e){
            e.printStackTrace();
        }

    }

}

----- output -----
5
0
java.lang.IllegalStateException: Not able to find fitness level for error_fitness

【讨论】:

  • 这是我坚持的问题之一,我不太确定我的 from(String) 是什么意思,我相信我的想法是推动播放器列表
  • from(String) - 获取 String 作为输入。通过迭代LevelOfFitness 中的所有声明值,它会尝试查找其中一个(CAREER_IN_DOUBT, UNFIT, ...)的名称是否与输入匹配。如果找到匹配项,则返回代表该名称/值的LevelOfFitness
猜你喜欢
  • 2022-01-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-09-06
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多