JAVA-更改成员枚举中的非静态类字段';s函数
我正在尝试用Java实现一个FSM。 我有一个FSM类,它有一个字符串字段消息和一个枚举来管理bot状态。 下面是一个示例代码JAVA-更改成员枚举中的非静态类字段';s函数,java,oop,enums,fsm,Java,Oop,Enums,Fsm,我正在尝试用Java实现一个FSM。 我有一个FSM类,它有一个字符串字段消息和一个枚举来管理bot状态。 下面是一个示例代码 public class fsmBot { public String message; public enum BotStates { greeting { @Override public void message() {
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;
}
};
}
}
但是,在这里,我在访问enum BotStates的函数greeting()中的String message(我的类fsmBot的一个字段)时遇到了一个错误。我可以通过静态消息来实现它的工作,但我需要运行这个fsmBot类的多个实例。
有没有办法做到这一点
*编辑1-
Eclipse在编辑器中出现以下错误-无法对非静态字段消息进行静态引用
enum
s是静态类,因此可以执行以下操作:
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();
}
}
枚举是静态的