如何访问另一个类中的特定Enum值?

时间:2019-02-07 21:07:09

标签: java enums

基本上,我正在尝试使用“投注”功能创建自己的“掷骰子”游戏,您可以在其中玩游戏并查看获胜或损失的金额的更新。为此,我创建了Craps类,该类允许玩家一次玩Craps,并且我的代码依赖于我使用PASS_WON,PASS_LOST值定义的自定义枚举(称为“ Status”(私有静态枚举Status)) ,DP_WON,DP_LOST,KEEP_ROLLING。

我苦苦挣扎的部分是BetMoney课程的第一步。我想首先说一下,如果在掷骰子游戏结束时,状态为WON,那么如果状态为LOST,钱被减去等,那么钱就会添加到您已经拥有的钱中。但是,我无法访问我在BetMoney类中的Craps类中声明的私有Status枚举,以便执行if语句。我完全不确定如何为这样的枚举创建一个吸气剂。有什么方法可以“获取”我的BetMoney类中的枚举值,因此可以在if语句中使用它们?我想做的是这样的事情(如果newGame [craps object..getGameStatus()== PASS_WON),则增量获胜。

我确实有一个专用变量“ GameStatus”的吸气剂,该变量用于循环游戏。这用作当前的GameStatus,它属于我所列举的Status类型。我只是不能在BetMoney中正确使用它。

摘要:

现在,我有2节课。掷骰子类(用于玩掷骰子的个人游戏),然后是BetMoney(将包含赢/输跟踪器)和金钱跟踪器。

状态当前是我的Craps类中的一个私有静态枚举,我正在尝试在BetMoney中使用它。

//This is where my Status Enum is declared, these are all in Craps Class
private static enum Status {
        PASS_WON, PASS_LOST, KEEP_ROLLING, DP_WON, DP_LOST;
}; 

//Status variable for each single game
private static Status GameStatus;

//Getter for the single game status (there's also a setter)
public Status getGameStatus() {
    return GameStatus;
}

//Throughout Craps, I have a lot of code similar to this, where 
//getPoint gets the original "point" (first sum rolled) and for certain 

//sums, you win or lose the game, and GameStatus is set for use later.
switch (CrapsGame.getPoint()) {
        case 7:
        case 11:
            CrapsGame.setGameStatus(Status.PASS_WON); 
}

//How I keep looping:
while(CrapsGame.getGameStatus().equals(Status.KEEP_ROLLING)) { 
   ...logic to keep the game working...

}

//At the end, I return GameStatus.

1 个答案:

答案 0 :(得分:2)

您已将枚举类声明为私有。这样可以防止在Craps类之外使用它。

%d{yyyy-MM-dd HH:mm:ss} %-5level [%thread] %logger{36} - %msg %ex{2}%nopex%n

您需要将其设置为私有以外的其他功能。优良作法是使每个类都尽可能地不可访问。但是您知道您想在Craps之外访问它。因此,如果Craps和BetMoney位于同一软件包中,则只需删除private static enum Status { PASS_WON, PASS_LOST, KEEP_ROLLING, DP_WON, DP_LOST; }; 即可使枚举受软件包保护:

private

在BetMoney内部,您将需要导入要使用的常量,或者使用其枚举类名限定它们的使用,如在示例代码中所做的(例如static enum Status { PASS_WON, PASS_LOST, KEEP_ROLLING, DP_WON, DP_LOST; }; )。 / p>