gpt4 book ai didi

JAVA - 更改成员枚举函数中的非静态类字段

转载 作者:行者123 更新时间:2023-12-01 19:43:08 25 4
gpt4 key购买 nike

我正在尝试用 Java 实现 FSM。我有一个 FSM 类,它有一个字符串字段消息,以及一个用于管理机器人状态的 ENUM。这是示例代码。

public class fsmBot
{
public String message;

public enum BotStates
{
greeting
{
@Override
public void message()
{
message = "Hi";
}

@Override
public String nextState()
{
String nxtState = BotStates.state1.name();
return nxtState;
}
},
state1
{
@Override
public void message()
{
fsmApplyLeave.message = "How are you?";
}

@Override
public String nextState()
{
String nxtState = BotStates.state1.name();
return nxtState;
}
};
}
}

但是,当我在枚举 BotStates 的函数greeting() 中访问 String message(我的类 fsmBot 的一个字段)时,出现错误。我可以通过将消息设置为静态来使其工作,但我需要运行此 fsmBot 类的多个实例。有什么办法可以做到这一点吗?

*编辑1-Eclipse 在编辑器中给出以下错误 - 无法对非静态字段消息进行静态引用

最佳答案

enum 是静态类,因此您可以执行以下操作:

public class fsmBot
{
public String message;

public enum BotStates
{
greeting
{
@Override
public void message(fsmBot bot)
{
bot.message = "Hi";
}

@Override
public String nextState()
{
String nxtState = state1.name();
return nxtState;
}
},
state1
{
@Override
public void message(fsmBot bot)
{
bot.message = "How are you?";
}

@Override
public String nextState()
{
String nxtState = state1.name();
return nxtState;
}
};

public abstract void message(fsmBot bot);
public abstract String nextState();
}
}

关于JAVA - 更改成员枚举函数中的非静态类字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59154950/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com