【发布时间】:2020-03-28 00:17:33
【问题描述】:
我正在尝试用 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() 中访问字符串消息(我的类 fsmBot 的一个字段)时出现错误。我可以通过将消息设为静态来使其工作,但我需要运行此 fsmBot 类的多个实例。 有没有办法做到这一点?
*编辑1- Eclipse 在编辑器中给出以下错误 - 无法对非静态字段消息进行静态引用
【问题讨论】:
-
枚举是静态的