Java 在另一个类中创建枚举对象

Java 在另一个类中创建枚举对象,java,enums,Java,Enums,作为我课程的一部分,我正在写一个基本的游戏。我遇到的问题是,我有一个名为ship的类,它存储关于一艘船的所有细节,当创建一艘新船时,我需要给它“保留”状态。然后,用户将能够委托船舶,因此其状态将更改为“活动” 我有一个名为ShipState的枚举类,代码如下 public enum ShipState implements Serializable { RESERVE(" In reserves"), ACTIVE(" Active"), RESTING(" Resting")

作为我课程的一部分,我正在写一个基本的游戏。我遇到的问题是,我有一个名为ship的类,它存储关于一艘船的所有细节,当创建一艘新船时,我需要给它“保留”状态。然后,用户将能够委托船舶,因此其状态将更改为“活动”

我有一个名为ShipState的枚举类,代码如下

public enum ShipState implements Serializable
{
    RESERVE(" In reserves"), 
    ACTIVE(" Active"), RESTING(" Resting"), 
    SUNK ("      Sunk/Lost");

    private String state;

    private ShipState(String st)
    {
        state = st;
    }

    public String toString()
    {
        return state;
    }
}

我遇到的问题是,我不知道如何在我的Ship类中创建一个enum对象,以提供Ship状态“in reserve”

您不必“创建”枚举对象。事实上,你不能。而是引用在枚举中声明的(
static final
)实例:

//In Ship
public void setShipState(ShipState state) {
    this.state = state;
}

//In some manager class
public void putInReserve(Ship ship) {
    ship.setShipState(ShipState.RESERVE);
}

您不必“创建”枚举对象。事实上,你不能。而是引用在枚举中声明的(
static final
)实例:

//In Ship
public void setShipState(ShipState state) {
    this.state = state;
}

//In some manager class
public void putInReserve(Ship ship) {
    ship.setShipState(ShipState.RESERVE);
}

您可以将ShipState作为Ship中的成员,只需发出ShipState.RESERVE即可设置值

public static void main(String args[]){
    Ship s1 = new Ship(ShipState.RESERVE);
}
public static class Ship{
    ShipState ss;
    public Ship(ShipState ss){
        this.ss = ss;
    }
}

您可以将ShipState作为Ship中的成员,只需发出ShipState.RESERVE即可设置值

public static void main(String args[]){
    Ship s1 = new Ship(ShipState.RESERVE);
}
public static class Ship{
    ShipState ss;
    public Ship(ShipState ss){
        this.ss = ss;
    }
}

为什么枚举需要位于另一个类中,而不是仅导入和使用您提供的枚举?如果您可以提供需要分配装运状态的装运类部分,则会有所帮助。为什么枚举需要位于另一个类中,而不是仅导入和使用您提供的枚举?如果您可以提供船舶类别中需要指定船舶状态的部分感谢您的帮助。我之前也有类似的解决方案,但它不起作用,因为当我尝试设置ShipState而不是执行ShipState.RESERVE时,我只是尝试编写RESERVE。再次感谢。如果键入
import static[package].ShipState.*,则只需键入
RESERVE
ACTIVE
等即可位于文件顶部,但通常不赞成这样做。谢谢帮助。我之前也有类似的解决方案,但它不起作用,因为当我尝试设置ShipState而不是执行ShipState.RESERVE时,我只是尝试编写RESERVE。再次感谢。如果键入
import static[package].ShipState.*,则只需键入
RESERVE
ACTIVE
等即可位于文件的顶部,但通常不赞成这样做。